首页 > 解决方案 > 计算替换 NaN 的值的总和

问题描述

我在 B 列中有一个带有一些 NaN 的数据框。

df = pd.DataFrame({
    'A':[654,987,321,654,987,15,98,338],
    'B':[987,np.nan,741,np.nan, 65,35,94,np.nan]})
df

    A   B
0   654 987.0
1   987 NaN
2   321 741.0
3   654 NaN
4   987 65.0
5   15  35.0
6   98  94.0
7   338 NaN

我将 B 中的 NaN 替换为 A 中的数字

df.B.fillna(df.A, inplace = True)
df


    A   B
0   654 987.0
1   987 987.0
2   321 741.0
3   654 654.0
4   987 65.0
5   15  35.0
6   98  94.0
7   338 338.0

计算已替换 B 中的 NaN 的值的总和的最简单方法是什么?

标签: pythonpandas

解决方案


可以使用series.isna()with.loc[]过滤满足列为空条件的 A 列B,然后求和:

df.loc[df['B'].isna(),'A'].sum()

选择:

df['B'].fillna(df['A']).sum() - df['B'].sum()

注意:您应该在执行就地操作之前执行此操作,或者最好创建一个副本并保存在不同的变量下以供以后参考。


推荐阅读