将Pandas df转换为rda文件

问题描述 投票:1回答:1

我正在用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':['A', 'B', 'C']})


    A   B   C
0   1   10  A
1   2   9   B
2   3   8   C

result = pd.DataFrame({'A': [1, 2, 3], 'B':[10, 9, 8], 'C':['A', 'B', 'C'],
                   'A.1': [1, 1, 1], 'A.2': [2, 2, 2], 'A.3':[3, 3, 3],
                   'B.1':[10, 10, 10], 'B.2':[9, 9, 9], 'B.3':[8, 8, 8],
                   'C.1':['A', 'A', 'A'], 'C.2':['B', 'B', 'B'], 'C.3':['C', 'C', 'C']})

    A   B   C   A.1 A.2 A.3 B.1 B.2 B.3 C.1 C.2 C.3
0   1   10  A   1   2   3   10  9   8   A   B   C
1   2   9   B   1   2   3   10  9   8   A   B   C
2   3   8   C   1   2   3   10  9   8   A   B   C
python r pandas rpy2 rda
1个回答
0
投票

我认为您正在使用@anthonybell's solution

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"

对我来说很好。我在R 3.6.1,python 3.6.10,pandas 1.0.1,rpy 2.9.4上。因此,下面是使用泡菜的另一种解决方案,但它需要在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)
© www.soinside.com 2019 - 2024. All rights reserved.