熊猫:求和多列,但如果该行中的任何列为NaN或0,则写NaN

时间:2018-12-01 19:20:05

标签: python python-3.x pandas dataframe

我正在尝试在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写入求和列。

预先感谢您的任何建议

1 个答案:

答案 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)