Python 将df转换为rda文件
我正在用Python清理数据,但我们用于可视化的程序是为R设置的。我正在尝试将数据帧保存为rda文件。我可以在这里找到资源开始,但是我的df有92列,当它转换为rda时,它有1942列,与下面的类似Python 将df转换为rda文件,python,r,pandas,rpy2,rda,Python,R,Pandas,Rpy2,Rda,我正在用Python清理数据,但我们用于可视化的程序是为R设置的。我正在尝试将数据帧保存为rda文件。我可以在这里找到资源开始,但是我的df有92列,当它转换为rda时,它有1942列,与下面的类似 import rpy2 from rpy2 import robjects from rpy2.robjects import pandas2ri pandas2ri.activate() df = pd.DataFrame({'A': [1, 2, 3], 'B':[10, 9, 8], 'C'
import rpy2
from rpy2 import robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()
df = pd.DataFrame({'A': [1, 2, 3], 'B':[10, 9, 8], 'C':['A', 'B', 'C']})
A B C
0 1 10 A
1 2 9 B
2 3 8 C
编辑:我尝试了这两种转换,结果都一样
df = pandas2ri.py2ri(df)
及
我认为你在使用:
这对我来说很好用。我使用的是R3.6.1、python 3.6.10、pandas 1.0.1和rpy 2.9.4。下面是另一种解决方案,使用pickle,但需要在R中使用网状物:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B':[10, 9, 8], 'C':['A', 'B', 'C']})
df.to_pickle("./test.pkl")
In R:
library(reticulate)
pd = import("pandas",convert=TRUE)
str(df)
'data.frame': 3 obs. of 3 variables:
$ A: num 1 2 3
$ B: num 10 9 8
$ C: chr "A" "B" "C"
- attr(*, "pandas.index")=RangeIndex(start=0, stop=3, step=1)
我建议将它们保存为羽毛文件。然后从R直接打开feather文件。我无法复制你不想要的结果。请张贴:
打印(rpy2.\uuuuu版本)
。由于是一个正在开发的项目,请务必使用最新版本。顺便说一句,.rdata通常用于允许多个对象保存到磁盘的环境,因此对于一个数据帧来说,它是过度填充的。考虑RDS,这是一个保存在磁盘上的特定对象。@ PaFaIT我总共有6个DFS,我想保存在RDA文件中。我使用的是rpy2的2.9.4版本。实际结果是什么?您是如何生成它的?请出示那条线。仅供参考-确保所有发布的代码都可运行。
import rpy2
from rpy2 import robjects
from rpy2.robjects import pandas2ri
import pandas as pd
pandas2ri.activate()
df = pd.DataFrame({'A': [1, 2, 3], 'B':[10, 9, 8], 'C':['A', 'B', 'C']})
r_data = pandas2ri.py2ri(df)
robjects.r.assign("df", r_data)
robjects.r("save(df, file='test.rda')")
In R:
load("test.rda")
> ls()
[1] "df"
> str(df)
'data.frame': 3 obs. of 3 variables:
$ A: int 1 2 3
$ B: int 10 9 8
$ C: chr "A" "B" "C"
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B':[10, 9, 8], 'C':['A', 'B', 'C']})
df.to_pickle("./test.pkl")
In R:
library(reticulate)
pd = import("pandas",convert=TRUE)
str(df)
'data.frame': 3 obs. of 3 variables:
$ A: num 1 2 3
$ B: num 10 9 8
$ C: chr "A" "B" "C"
- attr(*, "pandas.index")=RangeIndex(start=0, stop=3, step=1)