首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Pandas (Python)读取西班牙语SPSS文件时出错

使用Pandas (Python)读取西班牙语SPSS文件时出错
EN

Stack Overflow用户
提问于 2021-04-23 00:32:47
回答 2查看 296关注 0票数 1

早上好!

我正在尝试使用Python编写一个SPSS文件(.sav)。

这是我的代码:

代码语言:javascript
运行
复制
import pandas as pd

df=pd.read_spss('C:/Users/bonif/Documents/CSALUD01.sav')

df.head()

我得到了这个错误:

代码语言:javascript
运行
复制
df=pd.read_spss('C:/Users/bonif/Documents/CSALUD01.sav')
  File "C:\Users\bonif\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\spss.py", line 44, in read_spss
    df, _ = pyreadstat.read_sav(
  File "pyreadstat\pyreadstat.pyx", line 342, in pyreadstat.pyreadstat.read_sav
  File "pyreadstat\_readstat_parser.pyx", line 1034, in pyreadstat._readstat_parser.run_conversion
  File "pyreadstat\_readstat_parser.pyx", line 845, in pyreadstat._readstat_parser.run_readstat_parser
  File "pyreadstat\_readstat_parser.pyx", line 775, in pyreadstat._readstat_parser.check_exit_status
pyreadstat._readstat_parser.ReadstatError: Unable to convert string to the requested encoding (invalid byte sequence)

我发现错误可能是因为有一些单词包含字母"ñ“,或者一些单词包含以下字符"á”。我该如何解决这个问题呢?

数据库在这个谷歌驱动器中:https://drive.google.com/drive/folders/1P8v5NWE-GdAEJRZdmrp5KiL-DODClmfU?usp=sharing

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2021-04-25 21:27:02

正如ti7建议的那样,使用latin1,并且您需要指定编码,在本例中,pyreadstat将完成此操作:

代码语言:javascript
运行
复制
>>> import pyreadstat
# This raises an error
>>> df, meta = pyreadstat.read_sav("CSALUD01.sav")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pyreadstat/pyreadstat.pyx", line 342, in pyreadstat.pyreadstat.read_sav
  File "pyreadstat/_readstat_parser.pyx", line 1034, in pyreadstat._readstat_parser.run_conversion
  File "pyreadstat/_readstat_parser.pyx", line 845, in pyreadstat._readstat_parser.run_readstat_parser
  File "pyreadstat/_readstat_parser.pyx", line 775, in pyreadstat._readstat_parser.check_exit_status
pyreadstat._readstat_parser.ReadstatError: Unable to convert string to the requested encoding (invalid byte sequence)

# This is fine
>>> df, meta = pyreadstat.read_sav("CSALUD01.sav", encoding="latin1")
>>> 
票数 1
EN

Stack Overflow用户

发布于 2021-04-23 00:41:35

Pandas调用pyreadstat读取SPSS文件src

您可能会更幸运地直接使用它,因为它有一个设置编码的选项

从docs https://github.com/Roche/pyreadstat#other-options

您可以手动设置原始文件的编码。编码必须是iconv-compatible encoding。如果您正在处理带有非ascii字符的旧的xport文件,这是绝对必要的。这些文件没有在文件本身中标记编码,因此必须手动设置编码。

代码语言:javascript
运行
复制
import pyreadstat
df, meta = pyreadstat.read_sav(path, encoding=my_encoding)

也可能是你根本没有安装iconv (它依赖于它的编码),但我对此表示怀疑(你会得到一些其他的错误)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67217341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档