2013-12-11 46 views
0

使用熊貓0.11,在數據框上設置總和時,似乎有一個錯誤(或至少是非直觀的行爲)。有什麼建議?大熊貓問題與款項

p = pandas.DataFrame({ 'x' : [1,2,3], 'y' : [1,2,3] }) 
sumOfP = p.sum() #Gives a Series of [6,6]. OK. 
totals = pandas.DataFrame({ 'someOtherSeries' : [1,2]) 
totals['sumOfP'] = sumOfP #BAD! This is now [nan, nan] 

我期望totalals ['sumOfP']是[6,6]。那爲什麼是南,南?

回答

2

這是因爲他們在索引上對齊。在p.sum()仔細看:

>>> sumOfP = p.sum() 
>>> sumOfP 
x 6 
y 6 
dtype: int64 

這是xy索引的Series,而你試圖將其塞進在0和1這是偉大的索引的DataFrame新柱說,totals框架,但是你沒有告訴我在索引0和1的「sumOfP」列中應該發生什麼,我不會猜測。比較:

>>> p = pandas.DataFrame({ 0 : [1,2,3], 'y' : [1,2,3] }) 
>>> totals["sumOfP"] = p.sum() 
>>> totals 
    someOtherSeries sumOfP 
0    1  6 
1    2  NaN 

[2 rows x 2 columns] 

如果你想忽略指數,你可以只把值,如果你想:

>>> totals["sumofP"] = sumOfP.values 
>>> totals 
    someOtherSeries sumofP 
0    1  6 
1    2  6 

[2 rows x 2 columns] 

或重置事先指數:

>>> sumOfP.reset_index(drop=True) 
0 6 
1 6 
dtype: int64 
>>> totals["sumOfP"] = sumOfP.reset_index(drop=True) 
>>> totals 
    someOtherSeries sumOfP 
0    1  6 
1    2  6 

[2 rows x 2 columns]