将 pandas df 写入 csv 时出现 Unicode 编码错误
Unicode Encode Error when writing pandas df to csv
我清理了 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)
有人可以建议解决此问题的方法及其含义吗?
谢谢
您的 DataFrame 中有 unicode
个值。文件存储字节,这意味着所有 unicode
必须先编码为字节才能存储在文件中。您必须指定编码,例如 utf-8
。例如,
df.to_csv('path', header=True, index=False, encoding='utf-8')
如果不指定编码,则df.to_csv
使用的编码默认为Python2中的ascii
,或Python3中的utf-8
.
添加一个答案以帮助自己 google 稍后:
一个对我有帮助的技巧是先对有问题的系列进行编码,然后将其解码回 utf-8。喜欢:
df['crumbs'] = df['crumbs'].map(lambda x: x.encode('unicode-escape').decode('utf-8'))
这也会使数据帧正确打印。
我清理了 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)
有人可以建议解决此问题的方法及其含义吗?
谢谢
您的 DataFrame 中有 unicode
个值。文件存储字节,这意味着所有 unicode
必须先编码为字节才能存储在文件中。您必须指定编码,例如 utf-8
。例如,
df.to_csv('path', header=True, index=False, encoding='utf-8')
如果不指定编码,则df.to_csv
使用的编码默认为Python2中的ascii
,或Python3中的utf-8
.
添加一个答案以帮助自己 google 稍后:
一个对我有帮助的技巧是先对有问题的系列进行编码,然后将其解码回 utf-8。喜欢:
df['crumbs'] = df['crumbs'].map(lambda x: x.encode('unicode-escape').decode('utf-8'))
这也会使数据帧正确打印。