使用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]。那么为什么南,纳?
答案 0 :(得分:2)
这是因为他们正在对齐索引。仔细看看p.sum()
:
>>> sumOfP = p.sum()
>>> sumOfP
x 6
y 6
dtype: int64
这是由Series
和x
编制索引的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]