Python 基于列合并多个CSV文件

Python 基于列合并多个CSV文件,python,linux,bash,perl,awk,Python,Linux,Bash,Perl,Awk,我有以下3个CSV文件。我想根据列合并它们。 前两列的组合将是唯一标识符 我可以使用任何脚本语言,但性能应该很好 文件1: 文件2: 文件3: 输出: 用于测试的文本格式输出: abc、xxx、a1、b1、c1、p1、q1、r1、x3、y3、z3 abc,yyy,a2,b2,c2,p2,q2,r2,x4,y4,z4 def、zzz、a3、b3、c3、p3、q3、r3、x1、y1、z1 def、pqr、a4、b4、c4、p4、q4、r4、x2、y2、z2查看熊猫图书馆.merge应该会提供

我有以下3个CSV文件。我想根据列合并它们。 前两列的组合将是唯一标识符

我可以使用任何脚本语言,但性能应该很好

文件1:

文件2:

文件3:

输出:

用于测试的文本格式输出:

abc、xxx、a1、b1、c1、p1、q1、r1、x3、y3、z3

abc,yyy,a2,b2,c2,p2,q2,r2,x4,y4,z4

def、zzz、a3、b3、c3、p3、q3、r3、x1、y1、z1


def、pqr、a4、b4、c4、p4、q4、r4、x2、y2、z2查看熊猫图书馆
.merge
应该会提供您所需要的,但是很难说,因为您还没有发布任何代码。无论如何:

将第一个文件读入一个散列(Python称之为
dict
),键入前两列的组合

将第二个文件读入相同的散列,也由前两列的组合键控。您需要决定如何合并同一列的变量数据

重复第三个文件


Text::CSV
是您在这里的朋友….

由于缺少可用的测试数据,并且图像中的内容与您对数据的描述中关于唯一键的描述不匹配,因此完全未经测试,但由于合并多个表基本上是一个数据库问题,因此下面是一个使用sqlite完成所有繁重工作的脚本:

#/垃圾箱/垃圾箱
#用法:./join.sh filea.csv fileb.csv filec.csv
filea=$1
fileb=$2
filec=$3

sqlite3-batch-noheader-csv根据提供的信息,下面的代码应该适合您:

cat file1.csv file2.csv file3.csv | awk -F, '![$1$2]++' > out_file.csv

注意:如果任何文件中的列数超过2列,则与唯一标识符首次出现对应的数据(即前2列的组合)将显示在输出文件中。

而代码的问题是…?请在问题中以CSV文本而不是图像的形式发布数据。使复制和粘贴更容易,以便我们可以测试解决方案。您的最后一列不匹配!前两列的组合将是唯一标识符,但您的文件中有多个
(def,pqr)
行……在
perl
中,作业的工具是一个。试一试,看看你们相处得如何。这并不能满足OP的要求;它只打印出具有唯一前两列的第一行,不合并共享这两列相同值的行…并且需要在其中使用数组变量名。仅仅
[$1$2]
本身就是一个语法错误。在我发布答案后,我看到了OP的更新。也会更新答案。而且,这段代码工作时没有任何错误,尽管现在这已经无关紧要了。它肯定有一个错误——至少在gawk、mawk和nawk中是这样。你在使用其他awk实现吗?我不是一个系统程序员。但是,我只知道这对我很有效。我一直在探索和尝试中学习。我已经在Linux和MAC命令行上使用过好几次了。