从另一个系列中减去一个 Pandas 系列,而不为缺失数据创建 NaN 值
Subtract one Pandas Series from another without creating NaN values for 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
使用sub
a.sub(b,fill_value=0)
Out[213]:
1 95.0
2 102.0
3 96.0
4 104.0
dtype: float64
或者,您可以执行减法,然后 fillna
使用您的基础系列(在本例中 a
):
(a-b).fillna(a)
# 1 95.0
# 2 102.0
# 3 96.0
# 4 104.0
或者,您可以使用 pd.Series.update
(这将在与 a-b
中的索引匹配的地方修改 a
):
a.update(a-b)
# 1 95
# 2 102
# 3 96
# 4 104
当您从一个系列中减去另一个系列时,如果第二个系列中没有要减去的记录,则结果包含 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
使用sub
a.sub(b,fill_value=0)
Out[213]:
1 95.0
2 102.0
3 96.0
4 104.0
dtype: float64
或者,您可以执行减法,然后 fillna
使用您的基础系列(在本例中 a
):
(a-b).fillna(a)
# 1 95.0
# 2 102.0
# 3 96.0
# 4 104.0
或者,您可以使用 pd.Series.update
(这将在与 a-b
中的索引匹配的地方修改 a
):
a.update(a-b)
# 1 95
# 2 102
# 3 96
# 4 104