当你从另一个系列中减去一个系列时,如果第二个系列中没有要删除的记录,则结果包含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
答案 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