Оптимизация 950k + поисков в кадре данных pandas [closed]

В настоящее время я работаю над проектом, в котором имею дело с довольно большими наборами данных. У меня есть датафрейм 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 ответ
1

Ты можешь использовать DataFrame#merge.

df = transactions.merge(users, on="email")

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *