我有一个熊猫的数据框架,我想写一个CSV文件。

我使用:

df.to_csv('out.csv')

并得到以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u03b1' in position 20: ordinal not in range(128)

有没有什么方法可以很容易地解决这个问题(即我的数据帧中有unicode字符)? 是否有一种方法来写一个标签分隔文件,而不是一个CSV使用例如'to tab'方法(我不认为存在)?


当前回答

我会避免使用“\t”分隔符,这会在再次读取数据集时产生问题。

df。to_csv (file_name、编码=“utf - 8”)

其他回答

如果上面的解决方案对任何人都不起作用,或者CSV被搞砸了,只需从行中删除sep='\t',就像这样:

df.to_csv(file_name, encoding='utf-8')

在Windows上导出全路径文件的例子,如果你的文件有头文件:

df.to_csv (r'C:\Users\John\Desktop\export_dataframe.csv', index = None, header=True) 

例如,如果你想将文件存储在脚本所在的目录中,使用utf-8编码和制表符作为分隔符:

df.to_csv(r'./export/dftocsv.csv', sep='\t', encoding='utf-8', header='true')

它可能不是这种情况下的答案,但因为我有相同的错误消息与.to_csv尝试.toCSV('name.csv')和错误消息是不同的("SparseDataFrame'对象没有属性'toCSV')。因此,通过将数据帧转换为密集数据帧解决了这个问题

df.to_dense().to_csv("submission.csv", index = False, sep=',', encoding='utf-8')

要用制表符分隔,可以使用to_csv的sep参数:

df.to_csv(file_name, sep='\t')

使用特定的编码(例如:'utf-8')使用encoding参数:

df.to_csv(file_name, sep='\t', encoding='utf-8')

我会避免使用“\t”分隔符,这会在再次读取数据集时产生问题。

df。to_csv (file_name、编码=“utf - 8”)