【发布时间】:2015-01-09 22:36:19
【问题描述】:
我找不到在rpy2.robjects.DataFrame 及其任何基类中定义的__iter__() 方法*
不过,我可以使用 this code 将 DataFrame 转换为 dict:
from rpy2.robjects import DataFrame
dataframe = DataFrame(...)
d = dict(zip(dataframe.names, map(list, list(dataframe))))
为什么上面代码中的list(dataframe)没有触发TypeError: 'DataFrame' object is not iterable?
* 通过运行以下代码确定:
def test_attr(cls, attr):
if attr in cls.__dict__:
print cls.__name__
else:
for base in cls.__bases__:
test_attr(base, attr)
Python 2.7.8(默认,2014 年 10 月 18 日,05:53:47)
...
>>> 从 rpy2.robjects 导入 DataFrame
>>> test_attr(DataFrame, '__iter__')
【问题讨论】:
-
rpy2.robjects.Vector 中有
__getslice__。另外,__getitem__. -
你能在交互式提示符下输入
rpy2.robjects.Dataframe.__iter__,看看它是打印出函数还是内置函数,还是引发AttributeError?这将使答案更容易找到。 -
从您的编辑中,您还没有尝试打印出
Dataframe.__iter__吗?虽然这不会在所有情况下识别它定义的类,但它至少是测试它是否存在的一种快速可靠的方法......