Pandas 用多个值划分填充

Pandas divide fill with multiple values

我有两个索引略有不同的 pandas 系列对象。我想将一个系列分成另一个系列。当两个系列之一缺少索引元素时,默认方法会给我 NA。有一个选项可以填充缺失值,但它只能设置为一个值。我想根据哪个系列缺少该值来填充一个值。

例如

series1
0 10
1 20
2 30
3 40


series2
1 2
2 3
3 4
4 5

expected result: series1.divide(series2)
0 inf
1 10
2 10
3 10
4 0

actual result: series1.divide(series2)
0 NaN
1 10
2 10
3 10
4 NaN

有没有简单的方法来做到这一点?

您可以使用reindex扩展series1.index以包含series2.index,用0填充缺失值。然后您可以使用div方法,该方法填充缺失值默认值为 NaN:

series1 = pd.Series([10,20,30,40], index=[0,1,2,3])
series2 = pd.Series([2,3,4,5], index=[1,2,3,4])
series1 = series1.reindex(series1.index.union(series2.index), fill_value=0)
print(series1.div(series2))
# 0        nan
# 1   10.00000
# 2   10.00000
# 3   10.00000
# 4    0.00000
# dtype: float64