#python #pandas #merge #lookup #large-files
Вопрос:
В настоящее время пытаюсь объединить файл с ~6000 именами с файлом с ~90 миллионами имен и идентификаторов. Что я хочу сделать, так это найти идентификаторы для каждого из 6000 имен, в результате чего будет получен конечный выходной кадр данных из 6000 имен и их идентификаторов.
Для этого я использую этот скрипт:
df2.слияние(df1,left_on=»имя»,right_on=»ИМЯ»,как=»слева»)
df1-это фрейм данных из 90 миллионов строк; df2-фрейм данных из 6000 имен. Я использую левое соединение, потому что хочу, чтобы каждое из 6000 имен оставалось, даже если для них невозможно найти идентификатор. Разница в заглавных буквах согласуется с тем, как заголовки исходных файлов имеют свои заголовки.
Сценарий работал более пяти часов, а затем «завершен». Однако полученный df2 не показывает никаких идентификаторов и, похоже, вообще не изменился.
Меня интересуют две вещи:
- Является ли мой код правильным для этой задачи?
- Есть ли более быстрый метод, который я мог бы использовать для этого?
Спасибо!
Комментарии:
1. Может
df2 = df2.merge(...)
быть ?2. Я бы также предложил протестировать логику слияния на небольшом подмножестве
df1
, а затем выяснить, как выполнить полное слияние, как только вы будете уверены, что оно делает то, что вы ожидаете. Что-то вродеdf1_subset = df1.iloc[:1e4].copy()
тогоres = df2.merge(df1_subset, left_on='name', right_on='NAME', how='left')
.3. Я идиот… Майкл, ваше решение сработало правильно. Спасибо всем!