Rpy2:pandas数据帧不适合R

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

我需要用python(进入pandas数据帧)读取一个csv文件,在R中工作并返回到python。然后,为了将pandas数据帧传递给R数据帧,我使用rpy2,并且正常工作(代码如下)。

from pandas import read_csv, DataFrame
import pandas.rpy.common as com
import rpy2.robjects as robjects

r = robjects.r
r.library("fitdistrplus")

df = read_csv('./datos.csv')
r_df = com.convert_to_r_dataframe(df)
print(type(r_df))

这个输出是:

<class 'rpy2.robjects.vectors.FloatVector'>

但是,我试着在R中做一个合适的事情:

fit2 = r.fitdist(r_df, "weibull")

但我有这个错误:

RRuntimeError: Error in (function (data, distr, method = c("mle", "mme", "qme", "mge"),  : 
data must be a numeric vector of length greater than 1

我有第二个问题: 1_我做错了什么? 2_这是将python数据帧传递给R的最有效方法吗?因为,我看到这个导入:from rpy2.robjects.packages import importr

这是我读到的数据:https://mega.co.nz/#!P8MEDSzQ!iQyxt73a5pRvJNOxWeSEaFlsVS7_A1sZCAXkUFBLJa0

我用Ipython 2.1谢谢!

python r pandas rpy2
2个回答
2
投票

你有两个问题:

首先,您正在尝试使用您真正需要向量的数据框。 (如果你尝试使用R qazxsw poi for qazxsw poi,你也会收到错误。)

其次,pandas提供的pandas < - > rpy2支持是错误的,导致你的(推测)数字pandas数据帧转换为字符串/字符R数据帧:

data.frame

这个不好!以下代码修复了这些错误:

fitdist()

2
投票

我没有尝试过您的数据,但这样的事情应该可行。

In [27]: r.sapply(r_df, r["class"])
Out[27]: 
<StrVector - Python:0x1097757a0 / R:0x7fa41c6b0b68>
[str, str, str, str]
© www.soinside.com 2019 - 2024. All rights reserved.