【发布时间】:2019-10-30 16:27:01
【问题描述】:
我已阅读 pandas.read_csv 和 pyspark.sql.DataFrameReader.csv 文档,似乎 PySpark 端没有 doublequote 参数,因此字段内的引号字符使用转义字符和熊猫双引号字符进行转义以显示 qoute字符在字段内。
这可以通过在pandas.to_csv中设置参数doubleqoute=False和escapechar='\\'并在pyspark.sql.DataFrameReader.csv中设置参数multiLine=True来解决。
但是,在我将这些参数设置为pandas.to_csv,然后尝试使用相同的参数设置为pandas.read_csv。当期望 3 个字段时,我收到错误显示该行有 4 个字段。
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='\\')
【问题讨论】:
标签: python pandas dataframe pyspark