2017-06-28 242 views
1

我有一個用索引和列準備的熊貓數據框,所有的值都是NaN。 現在我計算了一個結果,它可以用於DataFrame的多行,並且我想一次性將它們全部賦值。這可以通過一個循環完成,但我很確定這個任務可以一次完成。爲一系列熊貓數據框分配一個系列

這裏有一個場景:

import pandas as pd 
df = pd.DataFrame(index=['A', 'B', 'C'], columns=['C1', 'C2']) # original df 
s = pd.Series({'C1': 1, 'C2': 'ham'}) # a computed result 
index = pd.Index(['A', 'C']) # result is valid for rows 'A' and 'C' 

簡易方法是

df.loc[index, :] = s 

但是這並不會改變數據幀。它仍然如

C1 C2 
A NaN NaN 
B NaN NaN 
C NaN NaN 

這個任務如何完成?

回答

3

似乎我們可以使用底層陣列的數據分配 -

df.loc[index, :] = s.values 

現在,這個假設指數在s的順序是一樣的df列。如果情況並非如此,如suggested by @Nras,我們可以使用s[df.columns].values進行右側分配。

+0

確實,這似乎適用於這種情況。但是,我覺得需要確保序列和DataFrame的列順序是相同的,對嗎?即''df.loc [index,:] = s [df.columns] .values'' – Nras

+0

@Nras好點!謝謝。據此編輯。 – Divakar

相關問題