Вы можете просто использовать объединение / объединение
Ваш оригинальный фрейм данных:
print(df1)
id adgroup cost
0 1001 GoogleMaps 101
1 1002 GoogleMaps 101
2 1003 Google 101
3 1004 AppStore 101
4 1005 AppStore 101
5 1006 GoogleDocs 101
Ваш фрейм данных, содержащий ваши ссылки:
print(df2)
adgroup new_adgroup
0 GoogleMaps G_Maps
1 Google GG
2 AppStore APG
3 GoogleDocs DOC
Объединить их на adgroup
выровняет эталонные значения в соответствии с правильными строками в ваших исходных данных (затем вы можете удалить / переименовать / изменить порядок столбцов по своему желанию):
df1.merge(df2, on='adgroup').drop(columns=['adgroup']).rename(columns={'new_adgroup':'adgroup'})
id cost adgroup
0 1001 101 G_Maps
1 1002 101 G_Maps
2 1003 101 GG
3 1004 101 APG
4 1005 101 APG
5 1006 101 DOC
Методы объединения
Допустим, ваш оригинали справочные кадры данных не идеально подходят - как вы обрабатываете лишние / недостающие строки?
Для вас доступно несколько методов соединения: left
, right
, outer
, inner
Документация Pandas содержит краткое объяснение этого, но допустим, что в вашем справочном кадре данных отсутствовал код adgroup
для AppStore
(та же идея применима, если ваш исходный кадр данныхтакже чего-то не хватает) и выглядит так:
adgroup new_adgroup
0 GoogleMaps G_Maps
1 Google GG
2 GoogleDocs DOC
Что происходит со строками AppStore
в исходных данных? Ну, вы можете контролировать это ...
Если вы хотите расставить приоритеты в исходных данных и сохранить эти строки, вы можете использовать объединение left
, и у вас просто будут значения NA
дляпропущенные коды:
df1.merge(df2, on='adgroup', how='left')
id cost adgroup
0 1001 101 G_Maps
1 1002 101 G_Maps
2 1003 101 GG
3 1004 101 NaN
4 1005 101 NaN
5 1006 101 DOC
Если вместо этого вы хотите расставить приоритеты в своем базовом кадре данных, чтобы в выводе были только коды, найденные в ссылке, вы можете использовать объединение right
. Обратите внимание, что поскольку AppStore
отсутствует в вашем ссылочном кадре данных, строки AppStore
из исходных данных удаляются:
df1.merge(df2, on='adgroup', how='right')
id cost adgroup
0 1001 101 G_Maps
1 1002 101 G_Maps
2 1003 101 GG
3 1006 101 DOC