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

2 つのファイルを追加する場合は、値を適切な列名に合わせて配置し、2 番目のファイルのヘッダーを最終的な出力ヘッダーに重複なく適切に追加する必要があります。

4

2 に答える 2

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 に答える
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 に答える