Подтвердить что ты не робот

Pandas суммировать два столбца, пропуская NaN

Если я создаю третий столбец, то любые столбцы, содержащие NaN (представляющие отсутствующие данные в моем мире), приводят к тому, что итоговый столбец вывода будет также NaN. Есть ли способ пропустить NaN без явной установки значений в 0 (что потеряет представление о том, что эти значения "отсутствуют" )?

In [42]: frame = pd.DataFrame({'a': [1, 2, np.nan], 'b': [3, np.nan, 4]})

In [44]: frame['c'] = frame['a'] + frame['b']

In [45]: frame
Out[45]: 
    a   b   c
0   1   3   4
1   2 NaN NaN
2 NaN   4 NaN

В приведенном выше, я хотел бы, чтобы столбец c был [4, 2, 4].

Спасибо...

4b9b3361

Ответ 1

с fillna()

frame['c'] = frame.fillna(0)['a'] + frame.fillna(0)['b']

или, как было предложено:

frame['c'] = frame.a.fillna(0) + frame.b.fillna(0)

:

    a   b  c
0   1   3  4
1   2 NaN  2
2 NaN   4  4

Ответ 2

Другой подход:

>>> frame["c"] = frame[["a", "b"]].sum(axis=1)
>>> frame
    a   b  c
0   1   3  4
1   2 NaN  2
2 NaN   4  4