Панды: Суммируйте несколько столбцов, но пишите NaN, если любой столбец в этой строке равен NaN или 0 - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь создать новый столбец в кадре данных 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 голосов
/ 01 декабря 2018

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...