python - 按公共(public)列合并 2 个 .csv 文件

标签 python shell join csv debian

我有两个 .csv 文件,其中文件 1 的第一行是:

MPID,Title,Description,Model,Category ID,Category Description,Subcategory ID,Subcategory Description,Manufacturer ID,Manufacturer Description,URL,Manufacturer (Brand) URL,Image URL,AR Price,Price,Ship Price,Stock,Condition

文件 2 的第一行:

Regular Price,Sale Price,Manufacturer Name,Model Number,Retailer Category,Buy URL,Product Name,Availability,Shipping Cost,Condition,MPID,Image URL,UPC,Description

然后每个文件的其余部分都充满了信息。

如您所见,这两个文件都有一个名为 MPID 的公共(public)字段(文件 1:col 1,文件 2:col 9,其中第一个 col 是 col 1)。

我想创建一个新文件,通过查看此列来组合这两个文件(如:如果两个文件中都有一个 MPID,那么在新文件中,这个 MPID 将与其行一起出现来自文件 1 及其来自文件 2 的行)。如果一个 MPID 只出现在一个文件中,那么它也应该进入这个组合文件。

文件没有以任何方式排序。

我如何在使用 shell 脚本或 python 的 debian 机器上执行此操作?

谢谢。

编辑:除了分隔字段的逗号外,这两个文件都没有逗号。

最佳答案

sort -t , -k index1 file1 > sorted1
sort -t , -k index2 file2 > sorted2
join -t , -1 index1 -2 index2 -a 1 -a 2 sorted1 sorted2

关于python - 按公共(public)列合并 2 个 .csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/826812/

相关文章:

python - 如何检查python对象列表中是否存在值

python - 将 python 函数作为 bash 命令运行

linux - 我有两个日期,需要找出时间差

mysql - 加入 where 条件

python - 从需要标准输入的子进程实时打印标准输出

python - 将 Excel 读入数据框并将文件名保留为列(Pandas)

python - 多行 python 正则表达式

linux - 在不使用任何预定义函数和使用 shell 脚本的情况下为 diff 输出着色

mysql - 在 JOIN 中写入具有 HAVING 总和限制的 SQL 计数,而无需在 FROM 中使用子查询

sql - 在静态项目列表上左加入?