Ошибки с функцией слияния панд

#python #pandas #merge #lookup #large-files

Вопрос:

В настоящее время пытаюсь объединить файл с ~6000 именами с файлом с ~90 миллионами имен и идентификаторов. Что я хочу сделать, так это найти идентификаторы для каждого из 6000 имен, в результате чего будет получен конечный выходной кадр данных из 6000 имен и их идентификаторов.

Для этого я использую этот скрипт:

df2.слияние(df1,left_on=»имя»,right_on=»ИМЯ»,как=»слева»)

df1-это фрейм данных из 90 миллионов строк; df2-фрейм данных из 6000 имен. Я использую левое соединение, потому что хочу, чтобы каждое из 6000 имен оставалось, даже если для них невозможно найти идентификатор. Разница в заглавных буквах согласуется с тем, как заголовки исходных файлов имеют свои заголовки.

Сценарий работал более пяти часов, а затем «завершен». Однако полученный df2 не показывает никаких идентификаторов и, похоже, вообще не изменился.

Меня интересуют две вещи:

  1. Является ли мой код правильным для этой задачи?
  2. Есть ли более быстрый метод, который я мог бы использовать для этого?

Спасибо!

Комментарии:

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. Я идиот… Майкл, ваше решение сработало правильно. Спасибо всем!