熊猫与楠总结两列

时间:2018-11-24 22:58:23

标签: python pandas

我在Nan的pandas数据框中有三列:

>>> 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 :(得分:2)

在添加第一列和第二列时,将Series.addfill_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

数据帧和序列具有类似addsub,...的方法,以便执行比关联的运算符+-,...更复杂的操作。可以提供。

这些方法可能会使用其他参数来微调操作。

答案 1 :(得分:1)

您可以使用fill_value=0使用add来获取总和:

>>> 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