[英]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_index
和stack
来获取预期的数据帧:
>>> (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.