熊猫:`item`已被弃用

时间:2019-08-07 08:45:00

标签: python pandas

到目前为止,我在这里使用了以下代码行:

max_total_gross = event_data["max_total_gross"].loc[event_data["event_id"] == event_id].item()

自从我更新熊猫以来,我收到未来的警告:

  

/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:12:   FutureWarning:item已被弃用,并将在   sys.path [0] ==''的将来版本:

我试图用这种方式修复它,但是结果不一样:

event_data.loc[event_data.event_id == event_id, 'max_total_gross']

我希望有一个整数。

5 个答案:

答案 0 :(得分:6)

您也可以只使用.iloc[0],但请记住,如果您要调用的系列中没有至少一项,它将引发IndexError

s = event_data.loc[event_data.event_id == event_id, 'max_total_gross']
s.iloc[0]

答案 1 :(得分:6)

如果您要断定Series的长度恰好为1,并且同时获取该单个值,则方法item()仍然有用。我建议更换:

result = ser.item()

具有:

result = ser.values.item()

这应该做您想要的。

答案 2 :(得分:1)

如果需要第一个匹配的值,请使用iternext,如果没有匹配的值则返回默认值:

s = event_data.loc[event_data.event_id == event_id, 'max_total_gross']

out = next(iter(s), 'no match')
print (out)

答案 3 :(得分:1)

在此使用案例中,pandas 1.0再次将其弃用:

Series.item()和Index.item()已被弃用(GH29250)

来自https://pandas.pydata.org/docs/whatsnew/v1.0.0.html#deprecations。另请参见问题GH29250中的讨论。

因此,请考虑更新或忽略或静默该警告。

答案 4 :(得分:0)

我只是遇到了同样的问题。对于我来说,解决item()贬值的最快方法是使用.iloc[0]