Панды, суммирующие две колонны с нан - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть три столбца в кадрах данных pandas с Nan:

>>> d=pd.DataFrame({'col1': [1, 2], 'col2': [3, 4], 'col3':[5,6]})
>>> d
   col1  col2  col3
0     1     3     5
1     2     4     6
>>> d['col2'].iloc[0]=np.nan
>>> d
   col1  col2  col3
0     1   NaN     5
1     2   4.0     6
>>> d['col1'].iloc[1]=np.nan
>>> d
   col1  col2  col3
0   1.0   NaN     5
1   NaN   4.0     6
>>> d['col3'].iloc[1]=np.nan
>>> d
   col1  col2  col3
0   1.0   NaN   5.0
1   NaN   4.0   NaN

Теперь я хотел бы, чтобы добавление столбца имело следующий вывод:

>>> d['col1']+d['col3']
0    6.0
1    NaN

>>> d['col1']+d['col2']
0   1.0
1   4.0

Однако на самом деле,вместо этого вывод:

>>> d['col1']+d['col3']
0    6.0
1    NaN

>>> d['col1']+d['col2']
0   NaN
1   NaN

Кто-нибудь знает, как этого добиться?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

При добавлении столбцов один и два используйте Series.add с fill_value=0.

>>> d
   col1  col2  col3
0   1.0   NaN   5.0
1   NaN   4.0   NaN
>>> 
>>> d['col1'].add(d['col2'], fill_value=0)
0    1.0
1    4.0
dtype: float64

. Для фреймов данных и рядов используются методы, такие как add, sub, ..., чтобы выполнить большесложные операции, которые могут обеспечить связанные операторы +, -, ....

Методы могут принимать дополнительные аргументы, которые точно настраивают операцию.

0 голосов
/ 25 ноября 2018

Вы можете использовать add, чтобы получить свои суммы, с fill_value=0:

>>> d.col1.add(d.col2, fill_value=0)
0    1.0
1    4.0
dtype: float64

>>> d.col1.add(d.col3, fill_value=0)
0    6.0
1    NaN
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...