在 Pandas 中转置 MultiIndex

3

我有多个数据框,包含每个月的账单信息,即1月份、3月份、4月份等的数据。

我只想针对一个数据框执行以下操作,以保持简单,因为我对Pandas还比较陌生:

march = np.arange(27).reshape(3, 9)
march = pd.DataFrame(data=march, index=['A', 'B', 'C'], columns=['mar' + chr(ord('A') + i) for i in range(9)])

对其中一个数据框进行多级索引:

dates = ['March']
cols = pd.MultiIndex.from_product([dates, march.columns.to_list()])
    
pd.DataFrame(march, columns=cols)

输出:

(https://istack.dev59.com/Wp3AH.webp)

我希望它显示为转置后的数据框,即:

(https://istack.dev59.com/ucXAG.webp)

我尝试过堆叠和取消堆叠,但它们不能正常工作,并且会恢复到未转置的格式。

我的最终目标是能够对多个数据框执行此操作,并将它们全部输出到一个表格中,显示每个月及其相应的数据。

例如:

       January    February
      A   B   C   A  B  C
colA  x   x   x   x  x  x
colB  x   x   x   x  x  x
etc

抱歉如果这似乎是一个新手问题,我对Pandas不熟悉,而且已经发布的类似问题不能解决我的情况。

1个回答

4

对于 MultiIndex,将其重新赋值给march.columns,并且在重塑时使用DataFrame.stackSeries.unstack

dates = ['March']
march.columns = pd.MultiIndex.from_product([dates, march.columns.to_list()])
    

df = march.stack().unstack(0)
print (df)
     March        
         A   B   C
marA     0   9  18
marB     1  10  19
marC     2  11  20
marD     3  12  21
marE     4  13  22
marF     5  14  23
marG     6  15  24
marH     7  16  25
marI     8  17  26

1
我从未想过它会如此简单!非常感谢!!! - Joseph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接