pandas系列仅从左侧添加fill_value

时间:2016-06-17 17:30:43

标签: python pandas

当通过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])

只需添加系列s1s2即可:

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

其中填写了s1s2的缺失值。

问题:如何仅在左侧填写遗漏?

我希望有一个结果可以填补丢失的s1.loc[1]并在.loc[2]

返回丢失的内容
0    2.0
1    2.0
2    NaN
dtype: float64

1 个答案:

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