Pandas: a matriz de mesclagem é muito grande, grande, como mesclar partes?

Ao tentar mesclar dois quadros de dados usando pandas, recebo esta mensagem: "ValueError: array é muito grande". Eu estimo que a tabela mesclada terá cerca de 5 bilhões de linhas, o que provavelmente é demais para o meu computador com 8 GB de RAM (isso é limitado apenas pela minha RAM ou está embutido no sistema pandas?).

Sei que, depois de ter a tabela mesclada, vou calcular uma nova coluna e filtrar as linhas, procurando os valores máximos dentro dos grupos. Portanto, a tabela final de saída terá apenas 2,5 milhões de linhas.

Como posso resolver esse problema para poder executar esse método de mesclagem em partes menores e criar a tabela de saída, sem atingir minhas limitações de RAM?

O método abaixo funciona corretamente para esses dados pequenos, mas falha nos dados reais maiores:

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()]

Esta é uma continuação de duas perguntas anteriores:

Isso tem problemas de desempenho?

Qual é uma boa maneira de evitar o uso de linhas neste exemplo?

Eu respondo meu próprio Q abaixo.

questionAnswers(1)

yourAnswerToTheQuestion