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
我有两个索引略有不同的 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