我希望通过 Python 将许多 .CSV 文件转换为 .DTA 文件的过程自动化。.DTA 文件是由 Stata Statistics 语言处理的文件类型。
然而,我还没有找到一种方法来做到这一点。
该R
语言具有write(.dta)允许将 R 中的数据帧转换为 .dta 文件,并且有一个通过 RPy 从 Python 到 R 语言的端口,但我不知道如何使用 RPy 访问R 中的 write(.dta) 函数。
有任何想法吗?
您需要 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)
(从我对上一个问题的回答中复制粘贴)
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 的答案可能看起来不那么优雅,但它可能更有效。