我正在跟进几年前提出的问题:这里和此处
我想对pandas数据帧中的两列求和,其中两列都包含缺失的值。我浏览了一下互联网,但找不到我想要的精确输出。
我有一个如下的df,我想对col1和col2 求和
col1 col2
1 NaN
NaN 1
1 1
Nan Nan
我想要的输出:
col1 col2 col_sum
1 NaN 1
NaN 1 1
1 1 2
Nan Nan Nan
我不想要的:
当简单地使用df['col_sum'] = df['col1'] + df['col2']
给我时
col1 col2 col_sum
1 NaN Nan
NaN 1 Nan
1 1 2
Nan Nan Nan
当使用上面(链接的(线程中建议的sum()
函数时,会给我
col1 col2 col_sum
1 NaN 1
NaN 1 1
1 1 2
Nan Nan 0
因此,我希望有缺失值的数字之和输出该数字,两个缺失值之和输出缺失值。把Nan的值当作0对我来说是个问题。因为以后,如果我取col_sum
的mean()
,它有0
或Nan
,会得到完全不同的结果(或者不是吗?(。
使用Series.add
和fill_value
参数:
df['col_sum'] = df['col1'].add(df['col2'], fill_value=0)
或sum
带min_count=1
参数:
df['col_sum'] = df.sum(min_count=1, axis=1)
print (df)
0 1.0 NaN 1.0
1 NaN 1.0 1.0
2 1.0 1.0 2.0
3 NaN NaN NaN