두 파일의 차이점을 포함하는 파일 생성

두 파일의 차이점을 포함하는 파일 생성

두 개의 .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즉 , $3두 열의 차이가 있습니다.value_avalue_b

이 열에는 value_afile2.csv에서 file1.csv의 두 번째 열을 뺀 결과 차이가 있어야 하고, 이는 value_bfile2.csv에서 file1.csv의 세 번째 열을 뺀 결과 차이가 있어야 합니다.

따라서 결과는 다음과 같아야 합니다.

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

관련 정보