在Python中将.CSV文件转换为.DTA文件

时间:2013-10-10 12:32:08

标签: python r csv stata dta

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

然而,我还没有办法找到办法。

R语言有write(.dta),它允许将R中的dataFrame转换为.dta文件,并且通过RPy从Python获得R语言的端口,但我不能弄清楚如何使用RPy访问R中的write(.dta)函数。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您需要rpy2 for Python以及R中安装的foreign包。您可以通过启动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")')

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

robjects.r('x=read.csv("%s")' % fileName)

答案 1 :(得分:1)

(来自my answer to a previous question的copypasting)

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分钟 - 另见this question),第二步产生的文件可以比原来的大(在我的测试中,大小从51 MB到111MB)。 Spacedman的答案可能看起来不那么优雅,但它可能更有效率。