У меня есть два кадра данных: Users and Item_map
.
Users
состоит из user and fake_item_ids
, хранящихся в трех столбцах.
Item_map
состоит из real_item_ids and fake_item_ids
.
Я хочу заменить все fake_item_ids
на real_item_ids
.
Для иллюстрации с помощью фиктивного кода:
DataFrame Users
user fake_0 fake_1
0 1 6786 3938
1 2 6786 6786
2 3 4345 4345
3 4 7987 3938
4 5 7987 5464
DataFrame Item_map
real_id fake_id
0 101 7987
1 202 6786
2 303 5464
3 404 4345
4 505 3938
Ожидаемые результаты:
DataFrame Users
user real_0 real_1
0 1 202 505
1 2 202 202
2 3 404 404
3 4 101 505
4 5 101 303
Я попробовал следующее, основываясь на ответе, найденном здесь: как объединить два фрейма данных с разными именами столбцов в пандах? - питон
users['fake_0'] = users.merge(items.rename(columns={'fake_id': 'fake_0'}), how='inner')['real_id']
что привело к этому:
user fake_0 fake_1
0 1 202 3938
1 2 202 6786
2 3 404 4345
3 4 101 3938
4 5 101 5464
Это работает, но кажется глупым делать это для каждого столбца в отдельности (у меня есть девять столбцов, у которых есть fake_ids, которые должны быть real_ids).
Любая помощь очень ценится!
Пустой код:
users = pd.DataFrame({
'user': [1, 2, 3, 4, 5],
'fake_0': [6786, 6786, 4345, 7987, 7987],
'fake_1': [3938, 6786, 4345, 3938, 5464]
})
item_map = pd.DataFrame({
'real_id': [101, 202, 303, 404, 505],
'fake_id': [7987, 6786, 5464, 4345, 3938]
})