объединить два файла на основе общих значений столбцов - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть 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

И я хотел бы объединить файл1 и файл 2 в файл3 на основе 2-го столбца, напримерчто:

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 голосов
/ 26 сентября 2018

Вот решение с awk.

awk 'FNR==NR{a[$2]=$3;next} {print $0,a[$2]}' Input_file2  Input_file1
0 голосов
/ 26 сентября 2018

Какой путь является простейшим

Я не уверен, что вы подразумеваете под простейшим .Для этой проблемы вы можете просто использовать join:

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

. Для данного примера приведенная выше команда генерирует желаемый результат.Если ваш файл не отсортирован, вы также можете добавить опцию --nocheck-order.

0 голосов
/ 26 сентября 2018

Использование панд сэкономит вам много времени, если вы используете Python.Поэтому, если ваши фреймы данных 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...