【问题标题】:Pandas.to_csv gives error 'ascii' codec can't encode character u'\u2013' in position 8: ordinal not in range(128)Pandas.to_csv 给出错误 'ascii' codec can't encode character u'\u2013' in position 8: ordinal not in range(128)
【发布时间】:2017-08-22 00:27:42
【问题描述】:

我正在尝试将熊猫数据框保存到 csv,但失败并出现错误:

df.to_csv(location, sep='|', index=False, header=True)

'ascii' 编解码器无法对位置 8 中的字符 u'\u2013' 进行编码:序数不在范围内(128)

我有熊猫版本:

>>> import pandas as pd
>>> pd.__version__
u'0.19.2'
>>>

在另一台机器上,同样的命令可以工作。安装的 pandas 版本是 0.18.1

>>> import pandas as pd
>>> pd.__version__
u'0.18.1'
>>>

我知道添加 encoding='utf-8' 可以帮助我解决错误。 但是我想知道最近是否有导致更高版本的熊猫失败的变化。

谢谢,

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    来自https://github.com/pandas-dev/pandas/blob/v0.18.1/pandas/core/frame.py 我们发现:

    formatter = fmt.CSVFormatter(self, path_or_buf,
                                         line_terminator      = line_terminator,
                                         sep                  = sep,
                                         encoding             = encoding,
                                         compression          = compression,
                                         quoting              = quoting,
                                         na_rep               = na_rep,
                                         float_format         = float_format,
                                         cols                 = columns,
                                         header               = header,
                                         index                = index,
                                         index_label          = index_label,
                                         mode                 = mode,
                                         chunksize            = chunksize,
                                         quotechar            = quotechar,
                                         engine               = kwds.get("engine"),
                                         tupleize_cols        = tupleize_cols,
                                         date_format          = date_format,
                                         doublequote          = doublequote,
                                         escapechar           = escapechar,
                                         decimal              = decimal     ) 
    

    我们发现:https://github.com/pandas-dev/pandas/blob/v0.19.2/pandas/core/frame.py

    formatter = fmt.CSVFormatter(self,  path_or_buf,
                                        line_terminator =line_terminator,
                                        sep             =sep,
                                        encoding        =encoding,
                                        compression     =compression,
                                        quoting         =quoting,
                                        na_rep          =na_rep,
                                        float_format    =float_format,
                                        cols            =columns,
                                        header          =header,
                                        index           =index,
                                        index_label     =index_label,
                                        mode            =mode,
                                        chunksize       =chunksize,
                                        quotechar       =quotechar,
                                        
                                        tupleize_cols   =tupleize_cols,
                                        date_format     =date_format,
                                        doublequote     =doublequote,
                                        escapechar      =escapechar,
                                        decimal         =decimal)                                     
    

    唯一的区别是“引擎”参数......我们现在应该更深入地研究这个“引擎”参数:-( 这里某处:https://github.com/pandas-dev/pandas/blob/v0.18.1/pandas/formats/format.py

    这里: https://github.com/pandas-dev/pandas/blob/v0.19.2/pandas/formats/format.py

    祝你好运!

    【讨论】:

    • 感谢您的回答和有用的链接。我升级到最新版本,一切都很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多