如何在Excel/Pandas中基于ID匹配拉取重复ID对应列值?
用Pandas实现基于ID匹配拉取对应列值的解决方案
没问题,我帮你搞定这个重复ID的匹配问题!你的需求核心是保留原表所有重复行,同时按ID匹配另一个表的jul19列值,只处理原表已存在的ID,用Pandas的merge函数就能轻松实现,之前失败大概率是没选对连接方式~
具体步骤和代码示例
我直接给你能跑通的代码,每一步都给你解释清楚:
- 导入Pandas并读取两个工作表的数据
- 使用左连接按
id匹配数据,确保原表的所有行(包括重复ID的行)都被保留 - 输出或保存结果
import pandas as pd # 读取包含jun19和重复ID的工作表 df_jun = pd.read_excel('你的Excel文件路径.xlsx', sheet_name='jun工作表名称') # 读取包含jul19的工作表 df_jul = pd.read_excel('你的Excel文件路径.xlsx', sheet_name='jul工作表名称') # 关键操作:按id左连接,保留原表所有行,匹配对应jul19值 result_df = pd.merge(df_jun, df_jul, on='id', how='left') # 查看结果(和你要的最终格式完全一致) print(result_df) # 如果需要把结果保存回Excel,取消下面注释 # result_df.to_excel('匹配结果.xlsx', index=False)
为什么这个方法有效?
how='left'是核心:它会完全保留左表(也就是你的jun19表)的所有行,不管右表(jul19表)有没有对应的ID。因为你的原表ID(1、2、3)都在jul表中有对应值,所以所有行都会成功匹配到jul19的值,重复的ID行也会重复拿到对应的数值,正好符合你的需求。- 右表中ID为4、5的行因为原表没有,所以不会被加入结果里,完美满足“仅匹配已有ID”的要求。
验证结果
运行后你会得到和你预期完全一致的输出:
id jun19 jul19 0 1 3 4 1 2 2 6 2 3 7 45 3 1 3 4 4 2 2 6 5 3 7 45 6 1 3 4 7 2 2 6 8 3 7 45
内容的提问来源于stack exchange,提问作者ERJAN
相关产品推荐
相关产品推荐

