我对pandas不是很熟悉,有一行代码会出现警告,称它会在后续版本中被弃用。这里的受害者是 .item()。
orderTotal = eachOrderDF.loc[eachOrderDF['ITEM CODE'] == 'Order Total', 'ORDER QTY(PKS)'].item()
有没有其他方法可以重写这段代码以达到相同的效果?
我对pandas不是很熟悉,有一行代码会出现警告,称它会在后续版本中被弃用。这里的受害者是 .item()。
orderTotal = eachOrderDF.loc[eachOrderDF['ITEM CODE'] == 'Order Total', 'ORDER QTY(PKS)'].item()
有没有其他方法可以重写这段代码以达到相同的效果?
您可以使用 Series.iat
、Series.iloc
或将其转换为数组并选择第一个值来选择过滤后的 Series
的第一个值:
s = eachOrderDF.loc[eachOrderDF['ITEM CODE'] == 'Order Total', 'ORDER QTY(PKS)']
orderTotal = s.iat[0]
orderTotal = s.iloc[0]
orderTotal = s.values[0]
但如果没有匹配,那么意味着 s
是空的,上述 Series
解决方案失败了。然后,可以使用iter
和next
来指定可能的值,如果没有匹配,则使用这里的no match
:
orderTotal = next(iter(s), 'no match')