Вы можете обмануть, передав регулярное выражение для аргумента sep
, равного read_csv
.Я использовал регулярное выражение ^([^,]+),
, которое захватывает первую запятую.Я также использовал аргумент engine
, чтобы избежать предупреждения панд (поскольку механизм C по умолчанию не поддерживает sep для регулярных выражений) и аргумент usecols
, чтобы убедиться, что мы получаем только нужные нам столбцы (без него мы также получаем«неназванный» столбец, я не уверен, почему честно).
Вы можете получить больше информации о каждом аргументе в read_csv
документах .
тест.csv
Date,String
2010-12-31,'This, is, an example string'
2011-12-31,"This is an, example string"
2012-12-31,This is an example, string
Тогда
print(pd.read_csv('test.csv', sep='^([^,]+),', engine='python', usecols=['Date', 'String']))
Выходы
Date String
0 2010-12-31 'This, is, an example string'
1 2011-12-31 "This is an, example string"
2 2012-12-31 This is an example, string
Это не будет работать, если у вас будет более 2 «фактических» столбцов вфайл CSV