Python 用零行填充DF的每个外部级别索引,以便所有这些外部索引具有相同的形状

Python 用零行填充DF的每个外部级别索引,以便所有这些外部索引具有相同的形状,python,pandas,Python,Pandas,假设我有以下格式的DF: col1 col2 idx1 idx2 A W 2 6 X 5 8 Y 7 6 Z 5 3 B X 2 1 Y 6 5 C W 3 4 X

假设我有以下格式的DF:

             col1   col2
idx1 idx2          
   A    W       2      6
        X       5      8
        Y       7      6 
        Z       5      3
   B    X       2      1
        Y       6      5
   C    W       3      4
        X       9      4
        Y       5      3
我想填充idx1的B和C,以便它们的行数与idx1的A相同:

             col1   col2
idx1 idx2          
   A    W       2      6
        X       5      8
        Y       7      6 
        Z       5      3
   B    X       2      1
        Y       6      5
        0       0      0 
        0       0      0
   C    W       3      4
        X       9      4
        Y       5      3
        0       0      0
添加行的索引名并不重要

这就是我尝试过的:

blank = pd.DataFrame([0, 0]), index=df.columns).T
for ID in IDs:
    for _ in range(maxLength - lengths[ID]):
        df.loc[ID] = df.loc[ID].append(blank)
其中:

  • blank
    是一行零
  • IDs
    ['A','B','C']
  • maxLength
    =4(df.loc['A']
  • length
    {'a':4,'B':2,'C':3}

这导致
df.loc['A']
保持原样,但
df.loc['B']
df.loc['C']
保持其原始形状,但现在完全填充了
NaN
s。我认为在每次调用
df.loc[ID]=…

df.unstack(fill\u value=0)时,尝试分配一个新的、不同形状的df是一个问题.stack()@Wen对于我给出的原始示例非常有效。但是,在我的实际数据集中,内部索引并非都以相同的值开始,因此这将填充开始行中的情况。请参见我的修订示例-尤其是
df.loc['B']
的内部索引从
X
开始,而不是从
W
开始。这可能吗?