[英]How to concatenate pandas dataframes with multiple level columns
像這種形狀的 DataFrame 有好幾個。
data = {'AAA': DataFrame, 'BBB': DataFrame, ...}
DataFrame 中的每一個如下所示。
Date A B C D
2022-02-14 1 5 2 9
...
2022-02-14 2 5 8 7
我想像這樣連接它們。
ATTR A B C D
SYMBOL AAA BBB AAA BBB AAA BBB AAA BBB
Date
2022-02-14 1 2 5 9 2 4 9 2
...
2022-02-14 2 6 5 3 8 6 7 3
當我使用 pandas 1.3.5
時,我這樣做了。
data = pd.concat(data, sort=True).unstack(level=0)
data.columns.names = ['ATTR', 'SYMBOL']
但是,在 pandas 1.4.0
中,我不知道該怎么做。
請幫幫我。 我在這上面浪費了很多時間。
我認為這是DatetimeIndex
重復的問題,所以unstack
失敗了。 可能的解決方案是通過 GroupBy.cumcount 和DataFrame.set_index
將計數器級別添加到索引,通過GroupBy.cumcount
重塑並通過DataFrame.unstack
激光刪除輔助DataFrame.droplevel
:
data = pd.concat(data, sort=True)
data = pd.concat(data, sort=True)
data = (data.set_index(data.groupby(level=[0,1]).cumcount(), append=True)
.unstack(level=0)
.droplevel(-1))
print (data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.