簡體   English   中英

如何將 pandas 數據幀與多級列連接起來

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM