我正在尝试在一个子级别重新索引数据帧的多重索引。有问题的 df 看起来像这样:
test = pd.DataFrame({
'day':[1,3,5],
'position':['A', 'B', 'A'],
'value':[20, 45, 3]
})
test.set_index(['day', 'position'])
>> value
day position
1 A 20
3 B 45
5 A 3
我的目标是重新索引day
级别,将数据帧转换为以下内容:
>>>
value
day position
1 A 20.0
2 A 20.0
3 A 20.0
4 A 20.0
5 A 3.0
1 B 0.0
2 B 0.0
3 B 45.0
4 B 45.0
5 B 45.0
所以本质上我需要为每个头寸组将 day
重新索引为第 1 天到第 5 天,然后前向填充并用 0 填充。
最佳答案
用途:
- 首次 reshape
unstack
- 添加缺失天数
reindex
- 通过
ffill
转发填充 - 将第一个
NaN
替换为fillna
- reshape 由
stack
-
sort_index
预期输出
df = (test.set_index(['day', 'position'])
.unstack()
.reindex(range(1,6))
.ffill()
.fillna(0)
.stack()
.sort_index(level=[1,0]))
print (df)
value
day position
1 A 20.0
2 A 20.0
3 A 20.0
4 A 20.0
5 A 3.0
1 B 0.0
2 B 0.0
3 B 45.0
4 B 45.0
5 B 45.0
关于python - pandas 多索引数据框中重新索引子级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49301902/