簡體   English   中英

如何在 python 中添加/合並/連接兩個或多個多索引 pandas dataframe 以低於 Z78E62621F6398F14CCE

[英]How to do add/merge/concat two or more multiindex pandas dataframe in python to get below output?

這是我的第一個 Multiindex DataFrame df0

Attributes  Adj Close        Close          High
Symbols     AARON  AART      AARON  AART    AARON  AART
Date                                                
2021-12-01  111.3  512.2     111.3  512.2   114.0 519.5
2021-12-02  116.6  512.5     116.6  512.5   116.8 519.9
2021-12-03  117.2  522.3     117.2  522.3   122.5 526.0

下一個 DataFrame df1

Attributes  Adj Close     Close        High
Symbols     FINP   FLEX   FINP  FLEX   FINP  FLEX
Date                                                
2021-12-01  204.4  18.0  204.4  18.0   213.6 18.0
2021-12-02  204.5  18.7  204.5  18.7   206.3 18.9
2021-12-03  200.8  19.5  200.8  19.5   205.8 19.6   

現在我想得到最終的 dataFrame df

Attributes  Adj Close                  Close                      High
Symbols     AARON  AART  FINP   FLEX   AARON AART  FINP   FLEX    AARON  AART   FINP   FLEX
Date                                                
2021-12-01  111.3  512.2 204.4  18.0   111.3 512.2 204.4  18.0    114.0  519.5  213.6  18.0
2021-12-02  116.6  512.5 204.5  18.7   116.6 512.5 204.5  18.7    116.8  519.9  206.3  18.9
2021-12-03  117.2  522.3 200.8  19.5   117.2 522.3 200.8  19.5    122.5  526.0  205.8  19.6

Which function/method should I use to get desired output

注意:這里添加了兩個數據幀的列信息

df0.columns

MultiIndex([('Adj Close',      'AARON'),
            ('Adj Close',      'AART'),
            (    'Close',      'AARON'),
            (    'Close',      'AART'),
            (     'High',      'AARON'),
            (     'High',      'AART')],
           names=['Attributes', 'Symbols'])

df1.columns

MultiIndex([('Adj Close',      'AARON'),
            ('Adj Close',      'AART'),
            (    'Close',      'AARON'),
            (    'Close',      'AART'),
            (     'High',      'AARON'),
            (     'High',      'AART')],
           names=['Attributes', 'Symbols'])

您可以簡單地pd.concat它們,並使用groupbylevel=0 (按索引的第 0(1)級分組)+ first

df = pd.concat([df0, df1]).groupby(level=0).first()

Output:

>>> df
           Adj Close                      Close                       High                    
               AARON   AART   FINP  FLEX  AARON   AART   FINP  FLEX  AARON   AART   FINP  FLEX
Symbols                                                                                       
2021-12-01     111.3  512.2  204.4  18.0  111.3  512.2  204.4  18.0  114.0  519.5  213.6  18.0
2021-12-02     116.6  512.5  204.5  18.7  116.6  512.5  204.5  18.7  116.8  519.9  206.3  18.9
2021-12-03     117.2  522.3  200.8  19.5  117.2  522.3  200.8  19.5  122.5  526.0  205.8  19.6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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