熊猫:`item`已被弃用

Joe*_*der 9 python pandas

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

max_total_gross = event_data["max_total_gross"].loc[event_data["event_id"] == event_id].item()
Run Code Online (Sandbox Code Playgroud)

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

/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:12:item不建议使用FutureWarning:如果sys.path [0] =='',则将在以后的版本中删除:

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

event_data.loc[event_data.event_id == event_id, 'max_total_gross']
Run Code Online (Sandbox Code Playgroud)

我期望一个整数。

cxr*_*ers 6

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

result = ser.item()
Run Code Online (Sandbox Code Playgroud)

和:

result = ser.values.item()
Run Code Online (Sandbox Code Playgroud)

这应该做你想做的。


MoR*_*oRe 5

You could also just use .iloc[0], but keep in mind that it will raise an IndexError if there is not at least one item in the series you're calling it on.

s = event_data.loc[event_data.event_id == event_id, 'max_total_gross']
s.iloc[0]
Run Code Online (Sandbox Code Playgroud)


jez*_*ael 2

如果需要第一个匹配的值iter与 一起使用next,优点是如果没有值匹配则返回默认值:

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

out = next(iter(s), 'no match')
print (out)
Run Code Online (Sandbox Code Playgroud)