rpy2 / pandas:将具有列表类型列的pandas DataFrame传递到R中

时间:2018-11-16 17:41:34

标签: python r pandas rpy2

我有一些R代码,将data.frame作为输入,其中一列在其单元格中包含list个实例,例如:

data.frame(x=c("a", "b", "c"), y=I(list(c(1,2,3),c(4,5,6),c(7,8,9))))

看起来像

  x       y
1 a 1, 2, 3
2 b 4, 5, 6
3 c 7, 8, 9

我想用Python创建一个类似的熊猫DataFrame,并使用rpy2库(版本2.9.4)中的工具将其传递到我的R代码中。但是,当我运行以下命令时:

from rpy2.robjects import pandas2ri
pandas2ri.activate()

df = DataFrame({
    "x" : ["a", "b", "c"] ,
    "y"  : [[1,2,3], [4,5,6], [7,8,9] ]
})

r_df = pandas2ri.py2ri(df)

print(r_df)

我得到以下输出:

  x y.0.1L y.0.2L y.0.3L y.1.4L y.1.5L y.1.6L y.2.7L y.2.8L y.2.9L

0 a      1      2      3      4      5      6      7      8      9

1 b      1      2      3      4      5      6      7      8      9

2 c      1      2      3      4      5      6      7      8      9

当然,R代码最初是使用“禁止”功能I()来将list实例保留在data.frame中。有什么方法可以通过rpy2接口表达类似的意图?

0 个答案:

没有答案