当通过pandas系列或数据帧上的方法应用算术运算符时,可以传递参数fill_value
来指定如何处理缺失值。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.add.html
例如:
import pandas as pd
s1 = pd.Series([1, np.nan, 2])
s2 = pd.Series([1, 2, np.nan])
只需添加系列s1
和s2
即可:
s1.add(s2)
0 2.0
1 NaN
2 NaN
dtype: float64
s1
遗失了{p> s1.loc[1]
,s2
遗失了s2.loc[2]
。因此,loc[[1, 2]]
add
方法会丢失。如果我们改为使用fill_value=0
参数:
s1.add(s2, fill_value=0)
0 2.0
1 2.0
2 2.0
dtype: float64
其中填写了s1
和s2
的缺失值。
我希望有一个结果可以填补丢失的s1.loc[1]
并在.loc[2]
0 2.0
1 2.0
2 NaN
dtype: float64
答案 0 :(得分:1)
从左侧的角度来看:
s1.fillna(0).add(s2)
0 2.0
1 2.0
2 NaN
dtype: float64
从右边开始:
s1.add(s2.fillna(0))
s1.fillna(0).add(s2)
0 2.0
1 NaN
2 2.0
dtype: float64
来自两个:
s1.fillna(0).add(s2.fillna(0))
几乎相当于原始:
s1.add(s2, fill_value=0)
当两者都缺失时会崩溃。如果您想丢失两者,请使用fill_value
但是,您可以单独控制每个:
s1.fillna(-1).add(s2.fillna(1))
0 2.0
1 1.0
2 3.0
dtype: float64