当前位置: 首页 > 知识库问答 >
问题:

将熊猫df写入csv时的Unicode编码错误

邹学民
2023-03-14

我清理了400个excel文件,使用pandas将它们读入python,并将所有原始数据附加到一个大df中。

然后,当我尝试将其导出到csv时:

df.to_csv("path",header=True,index=False)

我得到这个错误:

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

有人能提出一个解决这个问题的方法吗?这意味着什么?

谢谢

共有2个答案

云育
2023-03-14

添加一个答案来帮助自己稍后谷歌一下:

帮助我的一个技巧是先对有问题的序列进行编码,然后将其解码回utf-8。比如:

df['crumbs'] = df['crumbs'].map(lambda x: x.encode('unicode-escape').decode('utf-8'))

这将使数据框也能正确打印。

唐彦
2023-03-14

数据帧中有unicode值。文件存储字节,这意味着所有unicode必须先编码为字节,然后才能存储在文件中。必须指定编码,例如utf-8。例如

df.to_csv('path', header=True, index=False, encoding='utf-8')

如果未指定编码,则使用df使用的编码。to_csv在Python2中默认为ascii,或者在Python3中默认为utf-8

 类似资料:
  • 问题内容: 我正在编写一个脚本,以将带有标头的大.xlsx文件减少到一个csv中,然后根据标头名称仅写有所需列的新csv文件。 我得到的错误是最后一部分代码,它说 我确定我忽略了一些愚蠢的事情,但是我已经阅读了熊猫网站上的to_csv文档,但我仍然感到茫然。我知道我使用了不正确的to_csv参数,但我似乎无法理解我猜的文档。 任何帮助表示赞赏,谢谢! 问题答案: 选择特定列的方法是这样的-

  • 问题内容: 如果“文件名”不存在,我想使用pd.write_csv写入“文件名”(带有标题),否则,如果存在“文件名”,则附加到文件名中。如果我只使用命令: 写入或追加成功,但似乎每次进行追加时都会写入标头。 如果文件不存在,如何只添加标题,如果文件存在,如何不添加标题而追加标题? 问题答案: 不确定熊猫是否有办法,但是检查文件是否存在将是一种简单的方法:

  • 如何才能从pandas数据帧中只写入前N行或从P行到Q行到csv而不首先对df进行子化?由于内存问题,我无法对要导出的数据进行子集。 我正在考虑一个函数,它逐行写入csv。 谢谢你

  • 我保存了一个熊猫数据框作为CSV使用 但是当我读到它在使用 我收到一条错误消息说 UnicodeDecodeError:“utf-8”编解码器无法解码位置158处的字节0xbf:无效的开始字节 我已经尝试通过使用打开csv文件来强制读取时的编码为utf-8 真的卡住了,有人能帮忙吗? 非常感谢

  • 问题内容: 如何将大数据文件分块写入CSV文件? 我有一组大型数据文件(1M行x 20列)。但是,我只关注该数据的5列左右。 我想通过只用感兴趣的列制作这些文件的副本来使事情变得更容易,所以我可以使用较小的文件进行后期处理。因此,我计划将文件读取到数据帧中,然后写入csv文件。 我一直在研究将大数据文件以块的形式读入数据框。但是,我还无法找到有关如何将数据分块写入csv文件的任何信息。 这是我现在

  • Python是如何将CSV文件读入pandas数据帧的(我可以使用它进行统计操作,可以有不同类型的列,等等)? 我的CSV文件有以下内容: 在R中,我们将使用以下方法读取此文件: 这将返回一个R数据。框架: 有没有类似python的方法来获得相同的功能?