繁体   English   中英

将多索引列展平为单独的列

[英]Flatten multindex columns into separate column

我有一个看起来与此类似的 DataFrame:

Date  Close                  Open
      AAP    AWS    BGG  ... AAP    AWS    BGG   ...
2020  10     50     13   ... 100    500     13   ...
2021  11     41     7    ... 111    41      7    ...
2022  12     50     13   ... 122    50      13   ...

并想把它变成

Date  Close  Open Index2
2020  10     100   AAP
2021  11     111   AAP
2022  12     122   AAP
2020  50     500   AWS    
... 

如何使用熊猫实现它?

您可以使用set_indexstack来获取预期的数据帧:

>>> (df.set_index('Date').stack(level=1)
       .rename_axis(index=['Date', 'Ticker'])
       .reset_index())
   Date Ticker  Close  Open
0  2020    AAP     10   100
1  2020    AWS     50   500
2  2020    BGG     13    13
3  2021    AAP     11   111
4  2021    AWS     41    41
5  2021    BGG      7     7
6  2022    AAP     12   122
7  2022    AWS     50    50
8  2022    BGG     13    13

我的输入数据框:

>>> df
   Date Close         Open         
          AAP AWS BGG  AAP  AWS BGG
0  2020    10  50  13  100  500  13
1  2021    11  41   7  111   41   7
2  2022    12  50  13  122   50  13

你也可以使用wide_to_long

pd.wide_to_long(df.set_axis(df.columns.map('_'.join).str.rstrip('_'),axis=1), 
              ['Close', 'Open'], 'Date', 'Ticker', '_', '\\w+').reset_index()

   Date Ticker  Close  Open
0  2020    AAP     10   100
1  2021    AAP     11   111
2  2022    AAP     12   122
3  2020    AWS     50   500
4  2021    AWS     41    41
5  2022    AWS     50    50
6  2020    BGG     13    13
7  2021    BGG      7     7
8  2022    BGG     13    13

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM