根据共同的列值合并两个文件

时间:2018-09-26 01:30:20

标签: python bash awk merge

我有file1个赞:

1 A aa
2 A bb
3 A cc
4 A dd
5 B xx
6 C yy
7 C zz

还有一个文件2:

1 A 11
2 B 22
3 C 33

我想将file1和file 2合并到基于第二列的file3中,这样:

1 A aa 11
2 A bb 11
3 A cc 11
4 A dd 11
5 B xx 22
6 C yy 33
7 C zz 33

哪种方法最简单?谢谢。

3 个答案:

答案 0 :(得分:1)

如果使用Python,使用pandas将为您节省很多时间。因此,如果您的数据框为df1

   1   2
0
1  A  aa
2  A  bb
3  A  cc
4  A  dd
5  B  xx
6  C  yy
7  C  zz

df2

   1   2
0
1  A  11
2  B  22
3  C  33

然后您可以使用merge

df1.merge(df2, left_on=1, right_on=1)

获得

   1 2_x  2_y
0  A  aa   11
1  A  bb   11
2  A  cc   11
3  A  dd   11
4  B  xx   22
5  C  yy   33
6  C  zz   33

答案 1 :(得分:0)

这是awk的解决方案。

awk 'FNR==NR{a[$2]=$3;next} {print $0,a[$2]}' Input_file2  Input_file1

答案 2 :(得分:0)

  

哪种方法是最简单的

我不确定最简单是什么意思。对于这个问题 您只需使用join

join -j 2 -o 1.1 1.2 1.3 2.3 file1 file2

对于给定的示例,以上命令生成所需的输出。如果文件未排序,则还可以添加--nocheck-order选项。