2017-10-19 92 views
1

這應該是顯而易見的,但我無法使其工作。將數據幀向量添加到數據幀表

我有一個熊貓數據幀A與列和索引名:

A = pd.DataFrame([[10, 20], [4, 5], [20, 30]], 
       columns = ['col1', 'col2'], 
       index = ['row1', 'row2', 'row3']) 

     col1 col2 
row1 10 20 
row2  4  5 
row3 20 30 

然後,我有另據幀B只有一行(沒有名字,所以默認爲0)和相同的列名A

B = pd.DataFrame([[100, 200]], 
       columns = ['col1', 'col2']) 
     col1 col2 
0  100 200 

我想增加A + B,所以我得到一個新的數據幀C

 col1 col2 
row1 110 220 
row2 104 205 
row3 120 230 

最明顯的事情是做:

A + B 

     col1 col2 
row1 NaN NaN 
row2 NaN NaN 
row3 NaN NaN 
0  NaN NaN 

然後我試圖

A.sum(B) 

TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed 

我缺少的東西? numpy數組將很容易地完成這項工作,數據框有什麼問題?

我知道索引名不匹配,但我想在矢量B適用於A的所有行

回答

2

你需要通過lociloc然後用add選擇創建BSeries

df = A.add(B.iloc[0]) 
print (df) 
     col1 col2 
row1 110 220 
row2 104 205 
row3 120 230 

詳細信息:

print (B.iloc[0]) 
col1 100 
col2 200 
Name: 0, dtype: int64 

或者通過指數名稱選擇:

df = A.add(B.loc[0]) 

print (B.loc[0]) 
col1 100 
col2 200 
Name: 0, dtype: int64 
2

使用

In [4472]: A + B.iloc[0] 
Out[4472]: 
     col1 col2 
row1 110 220 
row2 104 205 
row3 120 230