Самый быстрый способ сопоставить таблицу поиска с колонкой панд - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть фрейм данных панд (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 таким образом. Тем не менее, я, очевидно, работаю с парой таблиц, намного больше, чем в приведенном примере, и это занимает значительно больше времени, чем метод карты. Есть ли более практичный способ сделать это?

1 Ответ

0 голосов
/ 19 ноября 2018

Использование map

df2['Colz']=df2.ColY.map(df1.set_index('Col2').Col1)
df2
Out[211]: 
    ColX  ColY Colz
0    Mon     2    B
1   Tues     3    C
2   Weds     5    A
3  Thurs     4    C
4    Fri     1    A
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...