首页 > 解决方案 > sum 函数如何与 NaN 元素一起使用?

问题描述

我有一个带有一些 NaN 值的 DataFrame。在这个 DataFrame 中有一些行包含所有 NaN 值。当我对这些行应用 sum 函数时,它返回零而不是 NaN。代码如下:

df = pd.DataFrame(np.random.randint(10,60,size=(5,3)),
              index = ['a','c','e','f','h'],
              columns = ['One','Two','Three'])

df = df.reindex(index=['a','b','c','d','e','f','g','h'])
print(df.loc['b'].sum())

有什么建议吗?

标签: python-3.xpandas

解决方案


sum函数取NaN值为0。

如果希望 NaN 值之和的结果为 NaN:

df.loc['b'].sum(min_count=1)

输出:

nan

如果您应用到所有行(使用重新索引后),您将获得以下信息:

df.sum(axis=1,min_count=1)

a    137.0
b      NaN
c     79.0
d      NaN
e    132.0
f     95.0
g      NaN
h     81.0
dtype: float64

如果您现在修改行的 NaN 值:

df.at['b','One']=0
print(df)


    One   Two  Three
a  54.0  20.0   29.0
b   0.0   NaN    NaN
c  13.0  24.0   27.0
d   NaN   NaN    NaN
e  28.0  53.0   25.0
f  46.0  55.0   50.0
g   NaN   NaN    NaN
h  47.0  26.0   48.0

df.sum(axis=1,min_count=1)

a    103.0
b      0.0
c     64.0
d      NaN
e    106.0
f    151.0
g      NaN
h    121.0
dtype: float64

正如你现在看到的那样,b 行的结果是 0


推荐阅读