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

将单索引数据帧连接到多索引数据帧

将单索引数据帧连接到多索引数据帧

犯罪嫌疑人X 2023-09-12 16:43:03
我有两个数据框,结构类似于# df1                        data1   data2id      feature_count   12345   1               111     888        2               222     999        3               333     10101045678   0               444     111111        2               555     121212        3               666     131313        4               777     141414和# df2        descriptorid12345   "foo"45678   "bar"基于这个解决方案,我似乎应该能够简单地df1.join(df2)获得所需的结果#joined                        data1   data2   descriptorid      feature_count   12345   1               111     888     "foo"        2               222     999     "foo"        3               333     101010  "foo"45678   0               444     111111  "bar"        2               555     121212  "bar"        3               666     131313  "bar"        4               777     141414  "bar"然而,我实际得到的是NotImplementedError: Index._join_level on non-unique index is not implementedPandas 1.0.5。这看起来应该不复杂,但我显然误解了一些东西。我所寻找的只是将唯一映射列附加到df2(保证现有映射)的第一个索引上df1。
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

由于您只需要映射一列,因此只需执行以下操作:


df1['descriptor'] = df1.index.get_level_values('id').map(df2['descriptor'])

一般来说,您可以暂时重置其他索引,连接数据帧,然后将其设置回来:


df1.reset_index('feature_count').join(df2).set_index('feature_count', append=True)

输出:


                     data1   data2 descriptor

id    feature_count                          

12345 1                111     888      "foo"

      2                222     999      "foo"

      3                333  101010      "foo"

45678 0                444  111111      "bar"

      2                555  121212      "bar"

      3                666  131313      "bar"

      4                777  141414      "bar"


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号