为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2023-08-22 16:06:09
我有 2 个具有相同索引和列的数据框。我需要将它们加入或连接到一个数据框中。生成数据的代码如下:import pandas as pdsites = 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  RRSITELIST            AAA        1   2   6BBB        2   3   5CCC        3   4   4DDD        4   5   3print(ttt)          KK  GG  RRSITELIST            AAA       11  23  26BBB       22  33  25CCC       33  34  24DDD       34  35  23当我使用 concat 通过以下代码连接这两个数据帧时:res2 = pd.concat([vvv, ttt], axis=0, keys=["VVV", "TTT"], names=['Sensor', 'Site'])我得到这个结果:print(res2)             KK  GG  RRSensor Site            VVV    AAA    1   2   6       BBB    2   3   5       CCC    3   4   4       DDD    4   5   3TTT    AAA   11  23  26       BBB   22  33  25       CCC   33  34  24       DDD   34  35  23我需要加入他们才能得到如下结果:              KK  GG  RRSite  SensorAAA   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谢谢。
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您可以df.swapleveldf.sort_index和 一起使用reindex

print(res2.swaplevel().sort_index(level=0).reindex(['VVV','TTT'],level=1))

             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


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1572 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信