В настоящее время я работаю над проектом, в котором имею дело с довольно большими наборами данных. У меня есть датафрейм transactions
и другой users
.
Итерации через фрейм данных транзакций не проблема. я использовал timeit
и это займет чуть меньше минуты. Мой второй фрейм данных users
имеет 1000 строк. Оба этих фрейма данных имеют столбец email
. По сути, я пытаюсь получить userId
в ряду в users
что соответствует email
в каждом transactions
ряд. Мой текущий подход выглядит так:
for row in transactions.itertuples():
userId = users[users['email'] == getattr(row, 'email')]['userId'].values[0]
Этот простой поиск работает, но для моего случая он слишком медленный. Я держал его в работе более часа, но он все еще не закончил работу. Мне интересно, есть ли потенциально более быстрый способ выполнить этот поиск (возможно, сократить время работы до минут, а не часов)?
Заранее благодарю за любую помощь!
1 ответ
Ты можешь использовать DataFrame#merge
.
df = transactions.merge(users, on="email")