Я не уверен, что pandas может сделать это сам по себе, так как в ваших данных также есть как неэкранированные разделители, так и кавычки.
Однако вы сможете проанализировать его после изменения данных с помощью регулярных выражений с помощьюэкранирование кавычек, являющихся частью поля.
import re
from io import StringIO
data = """
"column1","column2","column3","column4"
"10",""AB"","ABCD","abcd"
"11",""CD,E"","CDEF","abcd"
"12",""WER"","DEF,31","abcd"
"""
data = re.sub('(?<!^)"(?!,")(?<!,")(?!$)', '\\"', data, flags=re.M)
pd.read_csv(StringIO(data), escapechar='\\')
Если вы читаете из файла, то:
with open('path/to/csv', 'r') as f:
data = re.sub('(?<!^)"(?!,")(?<!,")(?!$)', '\\"', f.read(), flags=re.M)
df = pd.read_csv(StringIO(data), escapechar='\\')
Регулярное выражение ищет кавычки, которых нет в начале (?<!^)
или конец (?!$)
каждой строки, а также для кавычек, которые не являются частью начала (?<!,")
и конца (?!,")
каждого поля