熊猫问题与总和

时间:2013-12-11 15:15:42

标签: python pandas

使用pandas 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]

我希望总计['sumOfP']为[6,6]。那么为什么南,纳?

1 个答案:

答案 0 :(得分:2)

这是因为他们正在对齐索引。仔细看看p.sum()

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

这是由Seriesx编制索引的y,您正试图将其填入DataFrame的新列中,索引为0和1这很好,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]