【问题标题】:How to source R code that writes dataframe into Python如何获取将数据帧写入 Python 的 R 代码
【发布时间】:2019-04-26 15:11:28
【问题描述】:

我有一个编写数据帧的 R 脚本。为简单起见,假设数据帧在 R 中是这样编写的:

testing = data.frame(x=c(1,2,3), y = c(4,5,6))

我的目标是使用 Python 代码对这个数据框进行一些建模(显然不是这个实际的数据框,但再次保持简单)。所以我用 Python 编写了以下代码来获取 R 代码:

import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
import rpy2.robjects.packages as rpackages
base = importr('base')
utils = importr('utils')
from rpy2.robjects.lib.dplyr import DataFrame
from rpy2.robjects import pandas2ri
pandas2ri.activate()

...

r = robjects.r
r.source("python-testing_script.R")

这里的省略号代表我加载了其他必需的包,但对于这个问题它们是不必要的。注意python-testing_script.R 是写入 r 数据帧的位置。

我原以为在这个 R 代码中进行采购时,Pandas 数据帧会被写入我的 Python 全局环境中,但我没有得到任何新的环境和以下输出:

Out[1]: 
R object with classes: ('list',) mapped to:
<ListVector - Python:0x00000143B9F98188 / R:0x00000143CD2BE988>
[DataFrame, BoolVector]
R object with classes: ('list',) mapped to:
<ListVector - Python:0x00000143B9F98188 / R:0x00000143CD2BE988>
[DataFrame, BoolVector]
  visible: <class 'rpy2.robjects.vectors.BoolVector'>
  R object with classes: ('logical',) mapped to:
<BoolVector - Python:0x00000143BFE14048 / R:0x00000143B9DC3DD8>
[       0]

关于在这里做什么的任何提示?我总是可以将我的数据框写入 csv 并将 CSV 文件读入 Python,但我认为让 R 和 Python 一起玩会更有趣。我也意识到,在这种微不足道的情况下,我可以只用 Python 编写数据帧,但我的实际场景并不那么简单。

【问题讨论】:

    标签: python r pandas dataframe


    【解决方案1】:

    我设法弄明白了。所以source 函数正在返回 R 对象,其中一个是我感兴趣的数据框。所以我所要做的就是把这个小家伙钉在上面:

    obj1, obj2 = r.source("python-testing_script.R")
    testing = pandas2ri.ri2py(obj1)
    

    这使我的 R 脚本中的 testing 数据框变成了 pandas 数据框。希望这可以帮助将来对 Python 比较陌生的其他人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2017-07-22
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多