Python 熊猫:`item`已被弃用
到目前为止,我在这里使用了这行代码:Python 熊猫:`item`已被弃用,python,pandas,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:项已弃用,将在以后的时间内删除 如果系统路径[0]='',则为未来版本
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:项已弃用,将在以后的时间内删除
如果系统路径[0]='',则为未来版本:
我试着用这种方式解决,但结果不一样:
event_data.loc[event_data.event_id == event_id, 'max_total_gross']
我需要一个整数。如果需要首先匹配值,请使用iter
和next
,优点是如果没有匹配值,则返回默认值:
s = event_data.loc[event_data.event_id == event_id, 'max_total_gross']
out = next(iter(s), 'no match')
print (out)
您也可以直接使用,但请记住,如果您调用的序列中没有至少一个项目,它将引发一个索引器
s = event_data.loc[event_data.event_id == event_id, 'max_total_gross']
s.iloc[0]
如果您希望断言序列的长度正好为1,并且同时获得单个值,则方法item()
仍然很有用。我建议更换:
result = ser.item()
与:
它应该做你想做的。熊猫1.0中再次没有为这个用例做准备:
Series.item()和Index.item()已取消预编译(GH29250)
从。另见本期中的讨论
考虑更新或忽略或沉默警告,如果需要进一步的计算(不只是打印它),
是下一个/ITER处理数据的正确方法吗?在我的代码后面的一点上,我做事件顺序[“y”]=事件顺序[“总计总计”]/(最大总计总计*100)
。我期望更多像s[0](不起作用)这样的方式来访问该值。next/iter永远不会出现在我的脑海中。我进行了更多的实验,我发现这一点也很有效:max\u total\u gross=event\u data.loc[event\u data[“event\u id”]==event\u id,“max\u total\u gross”]。值[0]
你认为使用什么更好?@joycoder-你的解决方案很好,如果总是匹配至少一个值的话。如果没有,如果失败。所以这取决于数据,我更喜欢更一般的解决方案。。。
result = ser.values.item()