You need to enable JavaScript to run this app. 如何使用Python按文件名匹配规则合并两张数据表
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python按文件名匹配规则合并两张数据表

解决方法

核心思路是先从table2的路径字段中提取出纯文件名作为公共匹配键,再用pd.merge完成关联:

  1. 提取table2的文件名列
    用字符串分割方法取路径最后一段的文件名,和table1的Filename列对齐:
# 从Path列提取纯文件名,存入新的Filename列
table2['Filename'] = table2['Path'].str.split('/').str[-1]
  1. 执行合并操作
    以Filename为公共键关联两张表,默认内连接即可匹配到所有存在对应关系的记录,如果需要保留table1的全部数据可以将how参数改为left:
merged_df = pd.merge(table1, table2, on='Filename', how='inner')

原操作失效原因说明

  • pd.concat是直接对两张表做行/列拼接,不会按照字段值做匹配关联,不符合需求
  • 之前直接使用pd.merge失效是因为两张表没有公共的关联字段,提前提取Filename字段后即可正常匹配

完整测试示例

你可以用以下代码验证效果,输出和你期望的样例完全一致:

import pandas as pd

# 模拟table1数据
table1 = pd.DataFrame({
    'ID': [12345, 12346, 12347, 12348, 12349, 12350],
    'Filename': ['12345.txt', '12346.txt', '12347.txt', '12348.txt', '12349.txt', '12350.txt']
})

# 模拟table2数据
table2 = pd.DataFrame({
    'Path': ['/table/text3/12349.txt', '/table/text1/12345.txt', '/table/text2/12346.txt',
             '/table/text1/12350.txt', '/table/text3/12347.txt', '/table/text1/12348.txt']
})

# 提取文件名
table2['Filename'] = table2['Path'].str.split('/').str[-1]

# 合并
merged_df = pd.merge(table1, table2, on='Filename')

print(merged_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 21:15:06