我有一个看起来像这样的数据框:

column1   column2   column3   column4
P1        D1        T1        1.0
P1        D1        T2        2.0
P1        D2        T1        3.0
P1        D2        T2        4.0
P2        D1        T1        5.0
P2        D1        T2        6.0
P2        D2        T1        7.0
P2        D2        T2        8.0


我想用column2和column3中的值对这些列进行多索引。它应该看起来像这样

column1   column4
          D1                  D2
          T1        T2        T1        T2
P1        1.0       2.0       3.0       4.0
P2        5.0       6.0       7.0       8.0

最佳答案

我相信您需要DataFrame.set_indexSeries.unstack

df = df.set_index(['column1','column2','column3'])['column4'].unstack([1,2])
print (df)
column2   D1        D2
column3   T1   T2   T1   T2
column1
P1       1.0  2.0  3.0  4.0
P2       5.0  6.0  7.0  8.0


如果需要MultiIndexcolumn4顶级,请删除column4并使用DataFrame.unstack

df = df.set_index(['column1','column2','column3']).unstack([1,2])
print (df)
        column4
column2      D1        D2
column3      T1   T2   T1   T2
column1
P1          1.0  2.0  3.0  4.0
P2          5.0  6.0  7.0  8.0

关于python - 使用列中的值对 Pandas 数据框进行多索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58337420/

10-09 18:51