Analizando el archivo CSV en pandas con comas en la última columna

Estoy atascado con algunos datos CSV mal formateados que necesito leer en un dataframe de Pandas. No puedo cambiar la forma en que se están grabando los datos (vienen de otro lugar), así que no hay soluciones que sugieran eso.

La mayoría de los datos está bien, pero algunas filas tienen comas en la última columna. Un ejemplo simplificado:

column1 is fine,column 2 is fine,column3, however, has commas in it! 

Todas las filas deben tener el mismo número de columnas (3), pero este ejemplo, por supuesto, rompe el lector CSV porque las comas sugieren que hay 5 columnas cuando en realidad hay 3.

Tenga en cuenta que no hay ninguna cita que me permita usar las herramientas estándar de lectura de CSV para manejar este problema.

Lo que sé, sin embargo, es que las comas adicionales siempre aparecen en la última columna (la más a la derecha). Esto significa que puedo usar una solución que se reduce a:

“Siempre asum que hay 3 columnas, contando desde la izquierda, e interprete todas las comas adicionales como contenido de cadena dentro de la columna 3”. O, redactado de manera diferente, “Interprete las dos primeras comas como separadores de columna, pero suponga que las comas posteriores son solo parte de la cadena en la columna 3”.

Puedo pensar en muchas formas extravagantes de lograr esto, pero mi pregunta es: ¿hay alguna manera elegante y concisa de abordar esto, preferiblemente dentro de mi llamado a pandas.csv_reader(...) ?

Corrija el csv, luego proceda normalmente:

 import csv with open('path/to/broken.csv', 'rb') as f, open('path/to/fixed.csv', 'wb') as g: writer = csv.writer(g, delimiter=',') for line in f: row = line.split(',', 2) writer.writerow(row) 

 import pandas as pd df = pd.read_csv('path/to/fixed.csv')