【问题标题】:Encoding Error of Reading .dta Files with Chinese Characters用汉字读取.dta文件的编码错误
【发布时间】:2018-03-23 20:22:22
【问题描述】:

我正在尝试使用 pandas 读取 .dta 文件:

import pandas as pd
my_data = pd.read_stata('filename', encoding='utf-8')

错误信息是:

ValueError: Unknown encoding. Only latin-1 and ascii supported.

其他编码形式也不起作用,例如 gb18030gb2312 用于处理中文字符。如果我删除编码参数,DataFrame 将是所有垃圾值。

【问题讨论】:

    标签: pandas encoding dta


    【解决方案1】:

    只需按默认编码读取原始数据,然后转移到预期的编码!假设出现乱码的列是column1

    import pandas as pd
    dta = pd.read_stata('filename.dta')
    print(dta['column1'][0].encode('latin-1').decode('gb18030'))
    

    print结果会显示正常的汉字,gb2312也可以。

    【讨论】:

      【解决方案2】:

      看pandas的源码(0.22.0版),read_stata支持的编码有('ascii', 'us-ascii', 'latin-1', 'latin_1', 'iso-8859-1 '、'iso8859-1'、'8859'、'cp819'、'latin'、'latin1'、'L1')。所以你只能从这个列表中选择。

      【讨论】:

      • 谢谢!但是我应该使用什么功能呢?
      • 对不起,我不知道,因为我没有 stata。
      • @Xiaodong read_stata 在 pandas 0.23.4 中将失败,ValueError: Unknown encoding. Only latin-1 and ascii supported.
      猜你喜欢
      • 2019-07-08
      • 2010-09-30
      • 2014-10-08
      • 2015-11-17
      • 1970-01-01
      • 2013-07-05
      • 2021-02-04
      • 2012-11-14
      • 1970-01-01
      相关资源
      最近更新 更多