首页 > 解决方案 > 如何将 pandas 数据框导出到文件,以便可以使用 pandas dan pyspark 打开它?

问题描述

我已经阅读了这两个文档,pandas.read_csv并且pyspark.sql.DataFrameReader.csv似乎 PySpark 端没有doublequote参数,因此字段内的引号字符使用转义字符和熊猫双引号字符进行转义,以显示 qoute 字符在字段内。

这可以通过 set parameter doubleqoute=Falseand escapechar='\\'inpandas.to_csv和 set parameter multiLine=Truein来解决pyspark.sql.DataFrameReader.csv

但是,在我将这些参数设置为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='\\')

标签: pythonpandasdataframepyspark

解决方案


我尝试了同样的方法,但没有遇到这个问题。请检查以下尝试过的代码

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: []

希望,这可以帮助你。


推荐阅读