在多索引矩阵pandas中重新组织列

atmip9wb  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(110)

我有一个pandas数据框架,其中每行都有来自不同海拔高度的传感器的一些读数。我设法用df.pivot函数在一个矩阵中得到这些读数,其中索引是标识符,列是不同的海拔高度和这些海拔高度的三个数据值。
我的矩阵如下所示(数据是0级列标题,Alt是1级)
| 数据_1。|数据_2|数据_3。|
| - -----|- -----|- -----|
| Alt_1-Alt_2-Alt_3-...|Alt-1-Alt_2-Alt_3-...|Alt_1-Alt_2-Alt_3-...|
我想要的是重新排列多索引列,以便级别0作为海拔高度,级别1是数据。
我尝试了各种方法来改变级别,重命名元组等。但没发现什么有用的东西我希望这个表看起来像这样:
| 备选案文1.| Alt_2| Alt_3|......这是什么?|
| - -----|- -----|- -----|- -----|
| 数据_1-数据_2-数据_3|数据_1-数据_2-数据_3|数据_1-数据_2-数据_3|数据_1-数据_2-数据_3|

suzh9iv8

suzh9iv81#

我认为这就是swaplevel的闪光点。尝试使用:

df.swaplevel(axis=1)

示例:

df = pd.DataFrame(
    {"Grade": ['A','B','C','D','E','F','G','H','I']},
    index=[
        ['Data_1']*3 + ['Data_2']*3 + ['Data_3']*3,
        ['Alt_1','Alt_2','Alt_3']*3]).T

它看起来如下:

Data_1             Data_2             Data_3            
       Alt_1 Alt_2 Alt_3  Alt_1 Alt_2 Alt_3  Alt_1 Alt_2 Alt_3
Grade      A     B     C      D     E     F      G     H     I

改造后:

df.swaplevel(axis=1)

我们得到:

Alt_1  Alt_2  Alt_3  Alt_1  Alt_2  Alt_3  Alt_1  Alt_2  Alt_3
      Data_1 Data_1 Data_1 Data_2 Data_2 Data_2 Data_3 Data_3 Data_3
Grade      A      B      C      D      E      F      G      H      I

相关问题