如何将pandas数据框导出到文件,以便可以使用pandas dan pyspark打开它?

时间:2019-06-17 05:27:34

标签: python pandas dataframe pyspark

我已经阅读了pandas.read_csvpyspark.sql.DataFrameReader.csv文档,而且PySpark端似乎没有doublequote参数,因此使用转义字符和加倍的熊猫对字段内的引号字符进行了转义用引号字符表示qoute字符在字段内。

这可以通过在doubleqoute=False中设置参数escapechar='\\'pandas.to_csv并在multiLine=True中设置参数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

我认为发生该错误的原因是,第一行的第二个字段包含\作为最后一个字符,而大熊猫将其读取为转义字符",并认为第二个字段不是到此为止。除了删除\字符之外,还有什么方法可以解决此问题?

这是获取错误的示例脚本

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='\\')

1 个答案:

答案 0 :(得分:0)

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

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

希望,这可能会对您有所帮助。