Python pandas read_csv delimitador en datos de columna

Estoy teniendo este tipo de archivo CSV:

12012;My Name is Mike. What is your's?;3;0 1522;In my opinion: It's cool; or at least not bad;4;0 21427;Hello. I like this feature!;5;1 

Quiero obtener estos datos en da pandas.DataFrame . Pero read_csv(sep=";") lanza excepciones debidas al punto y coma en la columna de mensajes generados por el usuario en la línea 2 (en mi opinión: es genial; o al menos no está mal). Todas las columnas restantes tienen dtypes numéricos constantemente.

¿Cuál es el método más conveniente para manejar esto?

Tratar con delimitadores sin comillas es siempre una molestia. En este caso, dado que parece que se sabe que el texto roto está rodeado por tres columnas codificadas correctamente, podemos recuperarlo. TBH, solo uso el lector Python estándar y construyo un DataFrame a partir de eso:

 import csv import pandas as pd with open("semi.dat", "r", newline="") as fp: reader = csv.reader(fp, delimiter=";") rows = [x[:1] + [';'.join(x[1:-2])] + x[-2:] for x in reader] df = pd.DataFrame(rows) 

que produce

  0 1 2 3 0 12012 My Name is Mike. What is your's? 3 0 1 1522 In my opinion: It's cool; or at least not bad 4 0 2 21427 Hello. I like this feature! 5 1 

Entonces podemos guardarlo inmediatamente y obtener una cotización correcta:

 In [67]: df.to_csv("fixedsemi.dat", sep=";", header=None, index=False) In [68]: more fixedsemi.dat 12012;My Name is Mike. What is your's?;3;0 1522;"In my opinion: It's cool; or at least not bad";4;0 21427;Hello. I like this feature!;5;1 In [69]: df2 = pd.read_csv("fixedsemi.dat", sep=";", header=None) In [70]: df2 Out[70]: 0 1 2 3 0 12012 My Name is Mike. What is your's? 3 0 1 1522 In my opinion: It's cool; or at least not bad 4 0 2 21427 Hello. I like this feature! 5 1