Pandas: Merge Array ist zu groß, groß, wie in Teilen zusammenführen?

Beim Versuch, zwei Datenrahmen mithilfe von Pandas zusammenzuführen, wird die folgende Meldung angezeigt: "ValueError: Array ist zu groß." Ich schätze, dass die zusammengeführte Tabelle ungefähr 5 Milliarden Zeilen haben wird, was wahrscheinlich zu viel für meinen Computer mit 8 GB RAM ist (wird dies nur durch meinen RAM begrenzt oder ist es in das Pandas-System eingebaut?).

Ich weiß, dass ich, sobald ich die zusammengeführte Tabelle habe, eine neue Spalte berechnen und dann die Zeilen filtern werde, um nach den Maximalwerten innerhalb der Gruppen zu suchen. Daher wird die endgültige Ausgabetabelle nur 2,5 Millionen Zeilen umfassen.

Wie kann ich dieses Problem auflösen, damit ich diese Zusammenführungsmethode für kleinere Teile ausführen und die Ausgabetabelle erstellen kann, ohne meine RAM-Beschränkungen zu überschreiten?

Die folgende Methode funktioniert für diese kleinen Daten ordnungsgemäß, schlägt jedoch für die größeren, echten Daten fehl:

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

Dies ist eine Folgemaßnahme zu zwei vorherigen Fragen:

Hat iterrows Leistungsprobleme?

Was ist eine gute Möglichkeit, um in diesem Beispiel die Verwendung von iterrows zu vermeiden?

Ich beantworte mein eigenes Q unten.