我已经阅读了 pandas.read_csv
和 pyspark.sql.DataFrameReader.csv
文档,PySpark 方面似乎没有 doublequote
参数,因此使用转义字符和 pandas 双引号字符对字段内的引号字符进行转义,以表明 qoute 字符在字段内。
这可以通过在 pandas.to_csv
中设置参数 doubleqoute=False
和 escapechar='\\'
并设置参数 来解决
。pyspark.sql.DataFrameReader.csv
中的 >multiLine=True
但是,在我将这些参数设置为 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='\\')
最佳答案
我也试过,但没有遇到这个问题。请检查以下尝试过的代码
import pandas as pd
data = pd.read_csv('c.csv')
print(data)
df = pd.DataFrame(data)
print(df)
df.to_csv('d.csv', doublequote=False)
data_1 = pd.read_csv('d.csv')
print(data_1)
以上代码的输出为:
Empty DataFrame
Columns: [1242, I see him, I know him, True]
Index: []
Empty DataFrame
Columns: [1242, I see him, I know him, True]
Index: []
Empty DataFrame
Columns: [Unnamed: 0, 1242, I see him, I know him, True]
Index: []
希望这对您有所帮助。
关于python - 如何将 Pandas 数据框导出到文件,以便可以使用 Pandas 和 pyspark 打开它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56625179/