Панды: Слияние массив слишком большой, большой, как объединить по частям?

При попытке объединить два кадра данных с помощью панд я получаю сообщение: «ValueError: массив слишком большой». Я предполагаю, что объединенная таблица будет иметь около 5 миллиардов строк, что, вероятно, слишком много для моего компьютера с 8 ГБ оперативной памяти (это ограничено только моей оперативной памятью или она встроена в систему pandas?).

Я знаю, что когда у меня будет объединенная таблица, я вычислю новый столбец, а затем отфильтрую строки в поисках максимальных значений в группах. Поэтому итоговая выходная таблица будет всего 2,5 миллиона строк.

Как я могу разбить эту проблему так, чтобы я мог выполнить этот метод слияния на меньших частях и построить таблицу вывода, не затрагивая мои ограничения ОЗУ?

Приведенный ниже метод работает правильно для этих небольших данных, но не подходит для больших реальных данных:

import pandas as pd
import numpy as np

# Create input tables
t1 = {'scenario':[0,0,1,1],
      'letter':['a','b']*2,
      'number1':[10,50,20,30]}

t2 = {'letter':['a','a','b','b'],
      'number2':[2,5,4,7]}

table1 = pd.DataFrame(t1)
table2 = pd.DataFrame(t2)

# Merge the two, create the new column. This causes "...array is too big."
table3 = pd.merge(table1,table2,on='letter')
table3['calc'] = table3['number1']*table3['number2']

# Filter, bringing back the rows where 'calc' is maximum per scenario+letter
table3 = table3.loc[table3.groupby(['scenario','letter'])['calc'].idxmax()]

Это продолжение двух предыдущих вопросов:

Есть ли у iterrows проблемы с производительностью?

Каков хороший способ избежать использования iterrows в этом примере?

Я отвечаю на свой вопрос ниже.

Ответы на вопрос(1)

Ваш ответ на вопрос