使用Pandas匹配两个CSV文件公共列并合并对应行数据的实现方法
CSV按NAME列合并实现方案
以下提供3种不同场景下的实现方式:
1. Python实现(灵活适配各类复杂场景、大文件处理)
需要先安装pandas依赖:pip install pandas
执行代码:
import pandas as pd # 替换为你本地的文件路径 df_id = pd.read_csv('file1.csv') df_comment = pd.read_csv('file2.csv') # 按NAME列合并,inner模式仅保留两边都匹配成功的行 merge_result = pd.merge(df_id, df_comment, on='NAME', how='inner') # 输出结果到新文件,关闭自动索引写入 merge_result.to_csv('merged_result.csv', index=False)
如果需要保留单侧全部数据,可将how参数修改为left(保留左侧文件全部行)、right(保留右侧文件全部行)、outer(保留两边全部行)。
2. Linux/macOS 命令行实现(无需代码,快速处理小文件)
使用系统自带的join命令即可完成,你给出的样例已经按NAME列预先排序,直接执行:
join -t ',' -1 2 -2 1 file1.csv file2.csv | awk -F ',' 'BEGIN{OFS=","}{print $2,$1,$3}' > merged_result.csv
参数说明:
-t ','指定csv分隔符为逗号-1 2取第一个文件的第2列(NAME)作为匹配键-2 1取第二个文件的第1列(NAME)作为匹配键- 后续awk命令用于调整列顺序,输出ID、NAME、COMMENTS的顺序
如果你的文件未预先按NAME排序,先执行排序操作再合并:
sort -t ',' -k2 file1.csv > file1_sorted.csv sort -t ',' -k1 file2.csv > file2_sorted.csv join -t ',' -1 2 -2 1 file1_sorted.csv file2_sorted.csv | awk -F ',' 'BEGIN{OFS=","}{print $2,$1,$3}' > merged_result.csv
3. 办公软件实现(适合无代码基础用户)
用Excel/WPS表格操作即可:
- 将两个CSV文件分别导入到同一个工作簿的两个工作表中
- 在第一个工作表(含ID、NAME)的C1单元格输入表头
COMMENTS - 在C2单元格输入公式:
=VLOOKUP(B2, 第二个工作表名!A:B, 2, FALSE) - 下拉C2单元格填充所有行,即可自动匹配得到对应的COMMENTS
- 最后将当前工作表的三列数据另存为CSV格式即可
内容的提问来源于stack exchange,提问作者Masamune
相关产品推荐
相关产品推荐

