【发布时间】:2018-05-12 18:36:57
【问题描述】:
我有一个具有三个索引级别的 MultiIndexed DataFrame。我想扩展我的第三级以包含给定范围内的所有值,但仅适用于两个较高级别中的现有值。 例如,假设第一级是名称,第二级是日期,第三级是小时。我希望所有 24 小时都有行(即使当前缺少一些),但仅限于已经存在的名称和日期。新行中的值可以用零填充。
所以一个简单的示例输入是:
>>> import pandas as pd
>>> df = pd.DataFrame([[1,1,1,3],[2,2,1,4], [3,3,2,5]], columns=['A', 'B', 'C','val'])
>>> df.set_index(['A', 'B', 'C'], inplace=True)
>>> df
val
A B C
1 1 1 3
2 2 1 4
3 3 2 5
如果 C 的所需值为 [1,2,3],则所需输出为:
val
A B C
1 1 1 3
2 0
3 0
2 2 1 4
2 0
3 0
3 3 1 0
2 5
3 0
我知道如何使用 groupby 并为每个组应用定义的函数来实现这一点,但我想知道是否有一种更简洁的方法来使用 reindex 来做到这一点(我不能让这个 one 用于 MultiIndex 案例,但也许我错过了什么)
【问题讨论】:
标签: pandas