问题描述
我想对 Pandas 数据框中的两列求和,其中两列都包含缺失值。 我已经浏览了互联网,但没有找到我正在寻找的精确输出。
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
col1 col2 col_sum
1 NaN 1
NaN 1 1
1 1 2
Nan Nan 0
因此,我希望具有缺失值的数字的总和输出该数字,而两个缺失值的总和输出一个缺失值。
将 Nan 视为 0 值对我来说是个问题。因为稍后,如果我将 mean()
的 col_sum
带上 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