如何在Python中以正确编码打开dta文件并解决NaN与TypeError问题?
解决pandas读取Stata文件全为NaN且无法添加编码参数的问题
先修正代码变量名错误:你定义了
df却打印data,这会触发未定义错误,先改成:df = pd.read_stata('selfemp.dta') print(df)pandas的
read_stata()在旧版本中不支持encoding参数,这就是你添加编码参数触发TypeError的原因,具体解决思路如下:- 升级pandas到支持
encoding的版本(1.0及以上),然后尝试Stata常用编码:df = pd.read_stata('selfemp.dta', encoding='latin-1') # 也可尝试 utf-8、cp1252 等编码 - 如果升级后仍有问题,使用专门处理统计文件的
pyreadstat库,它对编码的兼容性更好:pip install pyreadstatimport pyreadstat df, meta = pyreadstat.read_dta('selfemp.dta', encoding='latin-1') print(df) - 尝试关闭分类变量自动转换,部分场景下分类变量的编码异常会导致列值显示为NaN:
df = pd.read_stata('selfemp.dta', convert_categoricals=False)
- 升级pandas到支持
内容的提问来源于stack exchange,提问作者Staycalm
相关产品推荐
相关产品推荐

