微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – pandas.rpy.common.load_data()用法/文档?

我正在尝试转换一些< class'rpy2.robjects.vectors.Matrix'>变量进入Pandas数据帧.

在互联网上有很多关于如何这样做的复制粘贴说明,所有这些都给出了简短的例子:

pandas.rpy.common.load_data("infert")

没有关于“感染”来自哪里的任何信息.
我无法得到关于这个函数的任何文档(为什么没有?),但显然我不能使用它:

summary= r.summary(linear_model)
filtered_summary=summary.rx2("tTable")
print com.load_data("filtered_summary")

给我:

---------------------------------------------------------------------------
LookupError                               Traceback (most recent call last)
<ipython-input-68-a087eddd5220> in <module>()
      8 #print test1_sum.names
      9 print type(r_res)
---> 10 print com.load_data("filtered_summary")
     11 #print pd.DataFrame(test1_sum.rx2("tTable"))
     12 

/usr/lib64/python2.7/site-packages/pandas/rpy/common.pyc in load_data(name, package, convert)
     29     r.data(name)
     30 
---> 31     robj = r[name]
     32 
     33     if convert:

/usr/lib64/python2.7/site-packages/rpy2/robjects/__init__.pyc in __getitem__(self, item)
    226 
    227     def __getitem__(self, item):
--> 228         res = _globalenv.get(item)
    229         res = conversion.ri2ro(res)
    230         res.__rname__ = item

LookupError: 'filtered_summary' not found

而:

summary= r.summary(linear_model)
print com.load_data("summary")

给我:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-69-b51722281aa4> in <module>()
      8 #print test1_sum.names
      9 print type(r_res)
---> 10 print com.load_data("summary")
     11 #print pd.DataFrame(test1_sum.rx2("tTable"))
     12 

/usr/lib64/python2.7/site-packages/pandas/rpy/common.pyc in load_data(name, package, convert)
     32 
     33     if convert:
---> 34         return convert_robj(robj)
     35     else:
     36         return robj

/usr/lib64/python2.7/site-packages/pandas/rpy/common.pyc in convert_robj(obj, use_pandas)
    222             return converter(obj)
    223 
--> 224     raise TypeError('Do not kNow what to do with %s object' % type(obj))
    225 
    226 

TypeError: Do not kNow what to do with <class 'rpy2.robjects.functions.SignatureTranslatedFunction'> object

所以:

>如何正确使用load_data
>我怎样才能最好地将我的R矩阵转换为Pandas DataFrame?

解决方法:

load_data函数可用于将数据集加载到R datasets软件包中可用的数据框中,因此它是R data()函数的包装器.

例如:

from pandas.rpy.common import load_data
iris = load_data('iris')

将加载众所周知的虹膜数据集.它在文档中简要提到:http://pandas.pydata.org/pandas-docs/stable/r_interface.html#transferring-r-data-sets-into-python

如果你想转换rpy2.robjects ……你可以这样做:

from rpy2.robjects import pandas2ri
pandas2ri.activate()

然后转换应该自动发生.或者你可以明确地做:pandas2ri.ri2pandas(rpy2_object)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐