我正在尝试在pandas数据框中创建一个新列,该列将其他列的总和合计。但是,如果任何源列为空白(NaN或0),我都需要将新列也写为空白(NaN)
a b c d sum
3 5 7 4 19
2 6 0 2 NaN (note the 0 in column c)
4 NaN 3 7 NaN
我当前正在使用pd.sum函数,其格式如下
df['sum'] = df[['a','b','c','d']].sum(axis=1, numeric_only=True)
忽略NaN,但不将NaN写入求和列。
预先感谢您的任何建议
答案 0 :(得分:1)
replace
您的0到np.nan
,然后传递skipna = False
df.replace(0,np.nan).sum(1,skipna=False)
0 19.0
1 NaN
2 NaN
dtype: float64
df['sum'] = df.replace(0,np.nan).sum(1,skipna=False)