Unir dos archivos grandes por columna en python

Tengo 2 archivos con 38374732 líneas en cada uno y tamaño 3.3 G cada uno. Estoy tratando de unirme a ellos en la primera columna. Para hacerlo, decidí usar pandas con el siguiente código que se extrajo de Stackoverflow:

import pandas as pd import sys a = pd.read_csv(sys.argv[1],sep='\t',encoding="utf-8-sig") b = pd.read_csv(sys.argv[2],sep='\t',encoding="utf-8-sig") chunksize = 10 ** 6 for chunk in a(chunksize=chunksize): merged = chunk.merge(b, on='Bin_ID') merged.to_csv("output.csv", index=False,sep='\t') 

Sin embargo estoy recibiendo un error de memoria (no es sorprendente). Busqué el código con trozos de pandas (algo así como Cómo leer un archivo csv de 6 GB con pandas ), sin embargo, ¿cómo lo implemento para dos archivos en un bucle y no creo que pueda fragmentar el segundo archivo? ya que necesito buscar una columna en el segundo archivo completo. ¿Hay una salida para esto?

Esto ya se discutió en otras publicaciones como la que mencionó ( esto , esto o esto ).

Tal como se explica allí, intentaría usar el dataframe de dask para cargar los datos y ejecutar la combinación, pero dependiendo de su PC, es posible que no pueda hacerlo.

Ejemplo de trabajo mínimo:

 import dask.dataframe as dd # Read the CSVs df1 = dd.read_csv('data1.csv') df2 = dd.read_csv('data2.csv') # Merge them df = dd.merge(df1, df2, on='Bin_ID').compute() # Save the merged dataframe df.to_csv('merged.csv', index=False)