首页 > 解决方案 > Pandas:如何使用生成的 MultiIndex 在另一列中插入 DataFrame 列?

问题描述

我得到了对象 1 的以下数据结构:

dayofweek  A  B  C
Monday     1  2  3
Tuesday    4  5  6

A, B, C我为其他对象获得的所有这些物品,比方说Obj1Obj2, Obj3.

我想将所有日期放在一个具有 MultiIndex 列结构的数据框中:

object        Obj1      Obj2      Obj3
dayofweek  A  B  C   A  B  C   A  B  C
Monday     1  2  3   2  1  3   3  2  1
Tuesday    4  5  6   5  4  6   6  5  4

我怎样才能轻松做到?我尝试使用.unstack(),但它将对象的标签放在A, B, C列下方

标签: pythonpandas

解决方案


使用concatwithkeys参数 for MultiIndexwithrename列:

df = df.set_index('dayofweek')
df1 = df.rename(columns={'A':'B', 'B':'A'}).sort_index(axis=1)
df2 = df.rename(columns={'A':'C', 'C':'A'}).sort_index(axis=1)

df3 = pd.concat([df, df1, df2], keys=('Obj1','Obj2','Obj3'), axis=1)
print (df3)

          Obj1       Obj2       Obj3      
             A  B  C    A  B  C    A  B  C
dayofweek                                 
Monday       1  2  3    2  1  3    3  2  1
Tuesday      4  5  6    5  4  6    6  5  4

如果有 3 个带有dayofweek列使用的 DataFrame:

dfs = [df, df1, df2]
df3 = pd.concat([x.set_index('dayofweek') for x in dfs], keys=('Obj1','Obj2','Obj3'), axis=1)
print (df3)

推荐阅读