我希望通过Python自动化将许多.CSV文件转换为.DTA文件的过程。 .DTA文件是由Stata Statistics语言处理的文件类型。
然而,我还没有办法找到办法。 R
语言有write(.dta),它允许将R中的dataFrame转换为.dta文件,并且通过RPy从Python获得R语言的端口,但我不能弄清楚如何使用RPy访问R中的write(.dta)函数。
有什么想法吗?
答案 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的答案可能看起来不那么优雅,但它可能更有效率。