使用pandas与pyreadstat读取.DTA文件遇版本不支持错误
解决版本48的DTA文件无法被pandas/pyreadstat读取的问题
你遇到的问题是版本48的Stata DTA文件过于老旧,不在pandas和pyreadstat的支持范围内(两者仅兼容版本105及以上的DTA文件)。以下是可行的解决办法:
方法1:用Stata转换文件版本
如果能获取Stata软件,按以下步骤操作:
- 打开Stata,加载目标文件:
use "test.DTA", clear - 另存为高版本格式(推荐Stata 13+,适配大多数工具):
save "test_v13.DTA", replace version(13) - 之后用pandas或pyreadstat读取新文件即可:
import pandas as pd df = pd.read_stata("test_v13.DTA")
方法2:借助R语言转换格式
没有Stata的话,可通过R的foreign包转换文件:
- 安装并加载
foreign包:install.packages("foreign") library(foreign) - 读取老版本DTA并保存为CSV(通用格式):
data <- read.dta("test.DTA", convert.factors = FALSE) write.csv(data, "test.csv", row.names = FALSE) - 在Python中读取转换后的CSV:
import pandas as pd df = pd.read_csv("test.csv")
方法3:使用小众Python库读取老版本
部分第三方库支持更早期的DTA版本,比如dta-reader:
- 安装库:
pip install dta-reader - 读取文件:
注意:这类库维护活跃度较低,复杂数据结构可能存在兼容性问题。from dta_reader import dta_reader df = dta_reader.read_dta("test.DTA")
内容的提问来源于stack exchange,提问作者jonas
相关产品推荐
相关产品推荐

