У меня есть фрейм данных панд (DF1
), как показано ниже:
Col1 Col2
A 1
A 5
B 2
C 3
C 4
Я хотел бы отобразить значения в другой фрейм данных (DF2
), который выглядит следующим образом:
ColX ColY
Mon 2
Tues 3
Weds 5
Thurs 4
Fri 1
Чтобы создать это (соответствует Col1
- ColY
, чтобы сгенерировать ColZ
, используя Col2
):
ColX ColY ColZ
Mon 2 B
Tues 3 C
Weds 5 A
Thurs 4 C
Fri 1 A
Обычно я создаю словарь из DF1
(d1 = DF1.set_index('Col1').to_dict()['Col2']
), а затем создаю новый столбец (DF2['ColZ'] = DF2['ColY'].map(d1)
).
Однако, очевидно, d1
будет иметь дубликаты ключей, поэтому будет невозможно. Из того, что я знаю, следующим лучшим решением было бы пройти по каждой строке в DF1
для каждой строки в DF2
для поиска совпадений, а затем установить значения в ColZ
таким образом. Тем не менее, я, очевидно, работаю с парой таблиц, намного больше, чем в приведенном примере, и это занимает значительно больше времени, чем метод карты. Есть ли более практичный способ сделать это?