You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于共同字段匹配,为DataFrame新增取自另一多级索引DataFrame的列

解决方案

报错原因

你之前的写法有两个核心问题:

  1. 多级索引的键是(日期, 门店)格式的元组,直接单独传入单列值或者错误的列引用方式都找不到对应键
  2. data['DATE_INDUCTED', 'SHOP']是取data的二级列索引的写法,你实际需要的是取这两列的每行值组合为元组,作为查询多级索引的键

实现方法

方法1:用merge实现(最稳妥,不易出错)

不需要调整两个表的现有索引,直接指定匹配字段关联即可:

# 关联取值,how='left'保证原表数据不会丢失
data = data.merge(WIP.reset_index(), 
                  left_on=['induction date', 'shop'], 
                  right_on=['date', 'shop'], 
                  how='left').drop('date', axis=1) # 删掉多余的重复日期列

方法2:利用WIP的现有多级索引查询

如果不想做表关联,可以把原表的匹配字段打包成元组后查询:

# 注意元组顺序要和WIP的多级索引顺序严格对应:第一级是日期,第二级是门店
data['WIP'] = WIP.loc[data[['induction date', 'shop']].apply(tuple, axis=1), 'WIP'].values

注意事项

  • 两个表的日期字段类型必须统一,都为datetime类型或者都为字符串,类型不同会匹配失败
  • shop字段的内容要完全一致,多余空格、大小写差异都会导致匹配报错

内容的提问来源于stack exchange,提问作者Rachel Porter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:09:01