将 2 个相同的 pandas 数据框加入多级行键

我有 2 个具有相同索引和列的数据框。我需要将它们加入或连接到一个数据框中。生成数据的代码如下:


import pandas as pd

sites = pd.Index(['AAA', 'BBB','CCC', 'DDD'], name='SITELIST')

vvv = pd.DataFrame({'KK':[1,2,3,4],'GG':[2,3,4,5], 'RR':[6,5,4,3]}, index = sites)

ttt = pd.DataFrame({'KK':[11,22,33,34],'GG':[23,33,34,35], 'RR':[26,25,24,23]}, index = sites)

生成的数据框是


print(vvv)


          KK  GG  RR

SITELIST            

AAA        1   2   6

BBB        2   3   5

CCC        3   4   4

DDD        4   5   3


print(ttt)


          KK  GG  RR

SITELIST            

AAA       11  23  26

BBB       22  33  25

CCC       33  34  24

DDD       34  35  23

当我使用 concat 通过以下代码连接这两个数据帧时:


res2 = pd.concat([vvv, ttt], axis=0, keys=["VVV", "TTT"], names=['Sensor', 'Site'])

我得到这个结果:


print(res2)


             KK  GG  RR

Sensor Site            

VVV    AAA    1   2   6

       BBB    2   3   5

       CCC    3   4   4

       DDD    4   5   3

TTT    AAA   11  23  26

       BBB   22  33  25

       CCC   33  34  24

       DDD   34  35  23

我需要加入他们才能得到如下结果:


              KK  GG  RR

Site  Sensor

AAA   VVV      1   2   6

      TTT     11  23  26

BBB   VVV      2   3   5

      TTT     22  33  25

CCC   VVV      3   4   4

      TTT     33  34  24

DDD   VVV      4   5   3

      TTT     34  35  23

谢谢。


开满天机
浏览 1573回答 1
1回答

繁星点点滴滴

您可以df.swaplevel与df.sort_index和 一起使用reindex:print(res2.swaplevel().sort_index(level=0).reindex(['VVV','TTT'],level=1))             KK  GG  RRSite Sensor            AAA  VVV      1   2   6     TTT     11  23  26BBB  VVV      2   3   5     TTT     22  33  25CCC  VVV      3   4   4     TTT     33  34  24DDD  VVV      4   5   3     TTT     34  35  23
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python