到目前为止,我在这里使用了以下代码行:
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']
我希望有一个整数。
答案 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)
如果需要第一个匹配的值,请使用iter
和next
,如果没有匹配的值则返回默认值:
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]