1

我希望通过 Python 将许多 .CSV 文件转换为 .DTA 文件的过程自动化。.DTA 文件是由 Stata Statistics 语言处理的文件类型。

然而,我还没有找到一种方法来做到这一点。

R语言具有write(.dta)允许将 R 中的数据帧转换为 .dta 文件,并且有一个通过 RPy 从 Python 到 R 语言的端口,但我不知道如何使用 RPy 访问R 中的 write(.dta) 函数。

有任何想法吗?

4

2 回答 2

4

您需要 rpy2 用于 Python 以及foreign安装在 R 中的包。您可以通过启动 R 并键入install.packages("foreign"). 然后,您可以退出 R 并返回到 Python。

然后这个:

import rpy2.robjects as robjects
robjects.r("require(foreign)")
robjects.r('x=read.csv("test.csv")')
robjects.r('write.dta(x,"test.dta")')

如果需要,您可以构造robjects.r从 Python 变量传递给的字符串,例如:

robjects.r('x=read.csv("%s")' % fileName)
于 2013-10-10T13:25:08.573 回答
1

(从我对上一个问题的回答中复制粘贴)

pandas DataFrame 对象现在有一个“to_stata”方法。所以你可以做例如

import pandas as pd
df = pd.read_stata('my_data_in.dta')
df.to_stata('my_data_out.dta')

免责声明:第一步很慢(在我的测试中,读取 51 MB dta 大约需要 1 分钟 - 另请参阅此问题),第二步生成的文件可能比原始文件大得多(在我的测试中,大小从 51 MB 到 111MB)。Spacedman 的答案可能看起来不那么优雅,但它可能更有效。

于 2014-04-15T09:00:58.213 回答