2つのファイルの違いを含むファイルの作成

2つのファイルの違いを含むファイルの作成

2つの.csvファイルからこのようなものを生成するpythonic pandasメソッドを使用する代わりにawk

私が持っているものは次のとおりです。

file1.csv              | file2.csv
name,value_a,value_b   | name,value_a,value_b
A,2,3                  | A,3,5
B,1,5                  | B,5,7
C,5,1                  | C,9,4
D,9,2                  | D,10,20

両方のファイルの列は$1同じです.csv。しかし、熱$2とは$3異なります。私が望むのは、同じ列を使用して新しいファイルを生成することです$1$2つまり、$32列の違いがあります。value_avalue_b

この列には、value_afile2.csvからfile1.csvの2番目の列を減算した結果の差がなければなりません。これは、value_bfile2.csvからfile1.csvの3番目の列を引いた結果の差がなければなりません。

したがって、結果は次のようになります。

diff.csv
name,value_a,value_b
A,1,2
B,4,2
C,4,3
D,1,18

でこれを行うことはできますかawk?それとも、この道を守るべきですかpython3?事前にありがとう

私の試み:

awk -F, '(FNR==NR){hl[$1]=$2;lh[$1]=$3;next} 
{hl[$1]=$2-hl[$1];lh[$1]=$3-lh[$1];next} #update the arrays with the differences
END{ for (i in hl){print i,":",hl[i],lh[i]}}' file_1.csv file_2.csv  #print them

もっと良い方法がありますか?

ベストアンサー1

paste -d, file1 file2 |
awk 'BEGIN{ FS=OFS="," }
     NR==1{ print $1, $2, $3; next }
          { print $1, $5-$2, $6-$3 }'

またはそれawk自体:

awk 'BEGIN   { FS=OFS="," }
     NR==FNR { val_a[$1]=$2; val_b[$1]=$3; next }
     FNR>1   { print $1, val_a[$1]-$2, val_b[$1]-$3; next }1' file2 file1

おすすめ記事