Pandas - AttributeError:'_ iLocIndexer'对象没有属性'sector'

abu*_*nte 2 python pandas

我已经构建了一个示例代码,以查看事情是否按照我的意愿运行.

predictorgroups=predictor.groupby("sector")
targetco=target.iloc[1]
group=predictorgroups.get_group(targetco.sector).astype(object)
pdf=(group).sort('size',ascending=False)[:10].astype(object)
Run Code Online (Sandbox Code Playgroud)

它工作正常.所以我想升级并使代码交互多次,所以我将其改编为:

for i in range(len(target.index[:10])):
    predictorgroups=predictor.groupby("sector")
    targetco=target.iloc(i)
    group=predictorgroups.get_group(targetco.sector).astype(object)
    pdf=(group).sort('size',ascending=False)[:10].astype(object)
Run Code Online (Sandbox Code Playgroud)

请注意,这个代码与上面的代码完全相同.但是在第二个我得到这个错误:

Traceback (most recent call last):
File "/file.py", line 64, in <module>
group=predictorgroups.get_group(targetco.sector).astype(object)
AttributeError: '_iLocIndexer' object has no attribute 'sector'
Run Code Online (Sandbox Code Playgroud)

我注意到在第一个代码中,如果我打印,targetco我得到一个只有一个索引的Pandas系列.如果我在第二个中执行相同操作,则会得到以下对象类型:

targetco pandas.core.indexing._iLocIndexer object at 0x105a3e438

任何人都可以向我解释为什么会发生这种情况?为什么我在第二个代码中得到不同的响应,如果它们都是相同的?

jez*_*ael 5

我认为有拼写错误,()改为[]:

targetco=target.iloc(i)
Run Code Online (Sandbox Code Playgroud)

targetco=target.iloc[i]
Run Code Online (Sandbox Code Playgroud)

因为:

targetco = target.iloc(1)
print (targetco)
<pandas.core.indexing._iLocIndexer object at 0x000000000A8CD358>
Run Code Online (Sandbox Code Playgroud)

然后pandas.core.indexing._iLocIndexer对象没有列sector,所以引发错误:

print (targetco.sector)
AttributeError: '_iLocIndexer' object has no attribute 'sector'
Run Code Online (Sandbox Code Playgroud)