Python Pandas: Pivot/Stack 数据列和行

Python Pandas: Pivot/Stack data columns and rows

我已经用 Pandas 将一些数据整理成以下格式:

    1Attribute      2Attribute      3Attribute      prefix  new_c_header
0   LGT-0269        LGT-0275        LGT-0031        A       CODE
1   Hydrobromide    Doxylamine      Acetaminophen   A       Material
2   15.75           6.25            325             A       mg/capsule
3                                                   A       Overage per Full Batch (Kg)
4   LGT-0031        LGT-0269        LGT-0726        B       CODE
5   Acetaminophen   Hydrobromide    Phenylephrine   B       Material
6   325             10              5               B       mg/capsule
7                                                   B       Overage per Full Batch (Kg)

但我正在尝试使用 Python 和 Pandas 将此格式转换为以下格式:

0    prefix CODE        Material        mg/capsule  Overage per Full Batch (Kg)
1    A      LGT-0269    Hydrobromide    15.75   
2    A      LGT-0275    Doxylamine      6.25    
3    A      LGT-0031    Acetaminophen   325 
4    B      LGT-0031    Acetaminophen   325 
5    B      LGT-0269    Hydrobromide    10  
6    B      LGT-0726    Phenylephrine   5   

我多次尝试堆叠、熔化和转动都无济于事。真正让我绊倒的是将“new_c_header”列转换为新格式的新 headers。

尝试:

x = (
    df.set_index(["prefix", "new_c_header"])
    .stack()
    .unstack(level=1)
    .reset_index()
    .drop(columns="level_1")
)
x.columns.name = ""
print(x)

打印:

  prefix      CODE       Material Overage per Full Batch (Kg) mg/capsule
0      A  LGT-0269   Hydrobromide                                  15.75
1      A  LGT-0275     Doxylamine                                   6.25
2      A  LGT-0031  Acetaminophen                                    325
3      B  LGT-0031  Acetaminophen                                    325
4      B  LGT-0269   Hydrobromide                                     10
5      B  LGT-0726  Phenylephrine                                      5