0

我有几千个 csv 文件,每个文件都有不同的列标题集。我正在使用 python pandas 附加它们。我想知道是否有一种有效的方法可以在 UNIX 中附加这些文件。

例如。

CSV1:

Column1,Column2, Column3, Column4, Column5
1,aaa,bbb,0,NULL
2,aa1,bb1,,NULL

CSV2:

Column1,Column2, Column6, Column7, Column8
1,aaa,xyz,0,NULL
2,aa1,zy1,test-2,NULL


Required Output

Column1,Column2, Column3, Column4, Column5,Column6, Column7, Column8
1,aaa,bbb,0,NULL,,,
2,aa1,bb1,,NULL,,,,
1,aaa,,,,xyz,0,NULL
2,aa1,,,,zy1,test-2,NULL

完成附加两个文件时,值应与适当的列名对齐,并且第二个文件的标题应适当地附加到最终输出标题中,不得重复。

4

2 回答 2

0
awk -F, -v OFS="," 'FNR==NR{a[$1$2]=$0;next}($1$2 in a){x=$1$2;$1=$2="";gsub(/^,*/,"");print a[x]","$0}' file1 file2

测试如下:

> cat temp2
Column1,Column2, Column3, Column4, Column5
1,aaa,bbb,0,NULL
2,aa1,bb1,,NULL
> 
> 
> cat temp
Column1,Column2, Column6, Column7, Column8
1,aaa,xyz,0,NULL
2,aa1,zy1,test-2,NULL
> 
> 
> awk -F, -v OFS="," 'FNR==NR{a[$1$2]=$0;next}($1$2 in a){x=$1$2;$1=$2="";gsub(/^,*/,"");print a[x]","$0}' temp2 temp
Column1,Column2, Column3, Column4, Column5, Column6, Column7, Column8
1,aaa,bbb,0,NULL,xyz,0,NULL
2,aa1,bb1,,NULL,zy1,test-2,NULL
> 
于 2013-03-06T07:46:28.757 回答
0

join -t , -1 1 -2 1 -o 1.1 -o 1.2 -o 1.3 -o 1.4 -o 1.5 -o 2.3 -o 2.4 -o 2.5 CSV1 CSV2

似乎更好的方法

& 你也可以使用cut如下

cat CSV2 | cut -f 1,3,4,5 -d , > tmp1

join -t ',' -j 1 CSV1 tmp1

于 2013-03-06T08:12:38.570 回答