我试图对Pandas Dataframe 的列求和,当每列都有NaN时,sum = 0;根据文档,我期望sum = NaN。下面是我得到的结果:
In [136]: df = pd.DataFrame()
In [137]: df['a'] = [1,2,np.nan,3]
In [138]: df['b'] = [4,5,np.nan,6]
In [139]: df
Out[139]:
a b
0 1 4
1 2 5
2 NaN NaN
3 3 6
In [140]: df['total'] = df.sum(axis=1)
In [141]: df
Out[141]:
a b total
0 1 4 5
1 2 5 7
2 NaN NaN 0
3 3 6 9
sum.DataFrame.sum文档说“如果整行/整列都是NA,那么结果也是NA”,所以我不明白为什么索引2的“total”= 0而不是NaN。
4条答案
按热度按时间qvtsj1bj1#
pandas documentation » API Reference » DataFrame » pandas.DataFrame »
Dataframe .sum(自身,轴=无,跳过=无,级别=无,仅数值=无,最小计数=0,**kwargs)
最小计数:整数,默认值为0
执行操作所需的有效值数。如果存在的非NA值少于min_count,则结果为NA。
版本0.22.0中的新增功能:添加,默认值为0。这意味着全NA或空系列的总和为0,全NA或空系列的乘积为1。
引用Pandas最新的文件,它说
min_count
将是0的全NA系列。如果你说
min_count=1
,那么求和的结果将是NaN
。sxpgvts32#
伟大的链接由杰夫提供。
在这里你可以找到一个例子:
d6kp6zgx3#
一种解决方案是选择所有行都是nan的情况,然后将总和设置为nan:
或
后一个选项可能更实用,因为您可以创建一个列
['a','b', ... , 'z']
的列表,您可能希望对这些列求和。nwsw7zdq4#
我通过将序列转换为numpy数组来解决这个问题,该数组可以正确地计算答案。