从另一个Pandas系列中减去一个Pandas系列,而不为缺失的数据创建NaN值

时间:2018-02-09 20:17:57

标签: python pandas series missing-data

当你从另一个系列中减去一个系列时,如果第二个系列中没有要删除的记录,则结果包含NaN。

In [1]: import pandas as pd

In [2]: a = pd.Series({1: 100, 2: 102, 3: 103, 4: 104})

In [3]: a
Out[3]:
1    100
2    102
3    103
4    104
dtype: int64

In [4]: b = pd.Series({1: 5, 3: 7})

In [5]: a - b
Out[5]:
1    95.0
2     NaN
3    96.0
4     NaN
dtype: float64

假设缺失数据等于零,是否有更简单的方法进行减法?除了手动插入这样的零:

In [15]: b_dash = pd.Series(b, index=a.index).fillna(0.0)

In [16]: a - b_dash
Out[16]:
1     95.0
2    102.0
3     96.0
4    104.0
dtype: float64

2 个答案:

答案 0 :(得分:6)

使用sub

a.sub(b,fill_value=0)
Out[213]: 
1     95.0
2    102.0
3     96.0
4    104.0
dtype: float64

答案 1 :(得分:1)

或者,您可以执行减法,然后fillna执行基本系列(在本例中为a):

(a-b).fillna(a)

# 1     95.0
# 2    102.0
# 3     96.0
# 4    104.0

或者,您可以使用pd.Series.update(在a)与a-b的索引匹配的地方修改a.update(a-b) # 1 95 # 2 102 # 3 96 # 4 104

cls