Ответ 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
Если я создаю третий столбец, то любые столбцы, содержащие 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].
Спасибо...
с 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
Другой подход:
>>> frame["c"] = frame[["a", "b"]].sum(axis=1)
>>> frame
a b c
0 1 3 4
1 2 NaN 2
2 NaN 4 4