Я прочитал документацию как pandas.read_csv
, так и pyspark.sql.DataFrameReader.csv
, и кажется, что сторона PySpark не имеет параметра doublequote
, поэтому символ кавычки внутри поля экранируется с помощью escape-символа и символа удвоения кавычек панд, чтобы показать, что qoute символ находится внутри поля.
Это можно решить, установив параметр doubleqoute=False
и escapechar='\\'
в pandas.to_csv
и установив параметр multiLine=True
в pyspark.sql.DataFrameReader.csv
.
Но после того, как я установил эти параметры на pandas.to_csv
, а затем попытался pandas.read_csv
, используя тот же параметр. Я получил ошибку, показывающую, что в этой строке 4 поля, когда ожидаем 3 поля.
1242,"I see him, I know him \",an_username
1243,"I think I'm good now",another_username
Я думаю, что причина возникновения ошибки заключается в том, что второе поле первой строки содержит \
в качестве последнего символа, а pandas читает его как экранирующий символ "
и думаю, что второе поле на этом не заканчивается. Есть ли способ решить эту проблему, кроме удаления \
символа?
Это пример скрипта для получения ошибки
import pandas as pd
from io import StringIO
f = StringIO()
pd.DataFrame({'class':['y','y','n'],
'text':['I am fine','I saw him, I knew him \\','I think, I am good now'],
'value':['username','an_username','another_username']})\
.to_csv(f,doublequote=False,escapechar='\\',index=False)
f.seek(0)
print(f.read())
f.seek(0)
pd.read_csv(f,doublequote=False,escapechar='\\')