You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python匹配并合并两个CSV文件中的条目?

嘿,这个需求其实挺常见的,1000条数据量不大,完全可以用几种简单高效的方法搞定,我给你梳理几个最佳方案,你可以根据自己的技术栈和需求选:

最佳方案推荐

一、Python(最灵活,适合自定义复杂需求)

Python处理这类CSV合并需求简直是量身定做,1000条数据完全没压力,还能精准控制匹配和合并规则。核心用pandas库就行,步骤很清晰:

  • 先读取两个CSV文件到DataFrame,这是pandas处理表格数据的核心结构
  • 先确定匹配键:也就是两个文件里能唯一标识条目的共同字段(比如用户ID、邮箱、订单号),这是匹配的核心,要是字段名不一样也没关系,后面可以对应上
  • 选择合并方式:
    • 想保留所有条目(匹配的合并成一行,不匹配的单独保留):用pd.merge()how='outer'参数
    • 只需要保留两边都有的匹配条目:用how='inner'
    • 还能通过left_onright_on指定两个文件里不同名称的匹配字段
  • 最后调整列顺序到你要的目标格式,导出成CSV就行

给你个简单的代码示例参考:

import pandas as pd

# 读取两个CSV文件
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')

# 假设df1的匹配键是'user_id',df2的匹配键是'id',合并后保留所有条目
merged_df = pd.merge(df1, df2, left_on='user_id', right_on='id', how='outer')

# 调整列顺序为你需要的目标格式
target_columns = ['user_id', 'name', 'email', 'order_amount', 'order_date']  # 替换成你的目标列
merged_df = merged_df[target_columns]

# 导出最终结果
merged_df.to_csv('merged_result.csv', index=False)

要是有复杂匹配规则(比如模糊匹配、多字段组合匹配),还能写自定义函数配合apply()实现,灵活性拉满。

二、Excel(适合非技术人员,无需写代码)

如果你不会写代码,Excel的Power Query是绝佳选择,可视化操作就能搞定:

  • 打开Excel,点击「数据」选项卡,分别把两个CSV文件导入到Power Query编辑器
  • 在编辑器里找到「合并查询」功能,选择两个表,设置好匹配键(支持单个或多个字段组合)
  • 选择合并类型:「完全外部合并」保留所有条目,「内部合并」只留两边都有的匹配条目
  • 合并后可以删除多余列、调整列顺序,最后加载回Excel,再导出成CSV就行
  • 优点是不用碰代码,可视化步骤清晰,适合快速处理小数据量

三、SQL(如果有数据库环境)

要是你已经把CSV导入到数据库(比如MySQL、SQLite),用SQL的JOIN语句也很顺手:

  • 先把两个CSV导入成数据库表(比如table1table2
  • LEFT JOIN/RIGHT JOIN/FULL OUTER JOIN来实现合并,比如:
SELECT 
    t1.user_id,
    t1.name,
    t2.email,
    t2.order_amount
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.user_id = t2.id;
  • 执行查询后把结果导出成CSV即可,适合习惯用SQL操作数据的用户
关键注意事项
  • 明确匹配规则:一定要先确定靠谱的匹配键,避免重复匹配或者匹配错误,比如尽量用唯一ID类字段,别只用姓名(容易重名)
  • 处理缺失值:合并后可能会出现空值,根据需求决定是填充默认值还是保留空值
  • 验证结果:合并后随机抽查几条数据,确认匹配和合并的正确性,1000条数据不多,验证成本很低

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

火山引擎 最新活动