如何为一个多指标级别的所有缺失值添加行?
问题描述:
假设我有以下数据帧df
,由3级多索引索引:如何为一个多指标级别的所有缺失值添加行?
In [52]: df
Out[52]:
C
L0 L1 L2
0 w P 1
y P 2
R 3
1 x Q 4
R 5
z S 6
代码来创建数据帧:
idx = pd.MultiIndex(levels=[[0, 1], ['w', 'x', 'y', 'z'], ['P', 'Q', 'R', 'S']],
labels=[[0, 0, 0, 1, 1, 1], [0, 2, 2, 1, 1, 3], [0, 0, 2, 1, 2, 3]],
names=['L0', 'L1', 'L2'])
df = pd.DataFrame({'C': [1, 2, 3, 4, 5, 6]}, index=idx)
为L2
水平的可能值是'P'
,'Q'
,'R'
和'S'
,但是对于其余级别的特定值组合,缺少其中一些值。例如,组合(L0=0, L1='w', L2='Q')
不存在于df
中。
我想向df
添加足够的行,以便对于L2
以外的其他级别的值的每个组合,每个L2
级别的可能值都有一行。对于添加的行中,C
列的值应为0
IOW,我想扩大df
,使它看起来像这样:
C
L0 L1 L2
0 w P 1
Q 0
R 0
S 0
y P 2
Q 0
R 3
S 0
1 x P 0
Q 4
R 5
S 0
z P 0
Q 0
R 0
S 6
要求:
- 操作应该保持列的类型不变;
- 操作应该添加到完成只有指定的级别(
L2
)
是否有进行这种扩张的简单方法所需要的最小数量的行?