Отображение из Dataframe с использованием уникальной пары значений - PullRequest
0 голосов
/ 05 августа 2020

У меня есть onde df1 с 30829 строками, где у игрока есть имя и идентификатор. имена повторяются много раз.

RangeIndex: 30830 entries, 0 to 30829
Data columns (total 18 columns):
...
player_id          30830 non-null int64
player_name        30830 non-null object
team               30830 non-null object
...

и еще один df2, где эти игроки (не обязательно все они) имеют только уникальные имена и не имеют идентификаторов.

RangeIndex: 762 entries, 0 to 761
Data columns (total 6 columns):
...
player        762 non-null object
team          762 non-null object
...

Теперь мне нужно получить идентификаторы из df1, сопоставьте их с df2 и добавьте каждый идентификатор в новый столбец к соответствующему имени.

Я пробовал:

df2['id'] = df2['player'].map(
                    lambda x: df1.loc[df1['player_name']==x, 'player_id'])

Но, похоже, у некоторых игроков из двух разных команд есть идентичные имена, а идентификаторы удваиваются.

Как мне исправить это, вместо этого сопоставив уникальную пару значений (player_id и team)?

1 Ответ

2 голосов
/ 05 августа 2020

Вы можете попробовать drop_duplicates, затем map

mapping=df1.drop_duplicates('player_name').set_index('player_name')['player_id']    
df2['id']=df2['player'].map(mapping)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...