我试图在数据框中找到数据达到最大值的点,将其保留一段时间,然后再次下降(请参见下图)。
我试图找到索引值首次达到最大值的位置以及索引值首次离开最大值的位置。我已经尝试过以下方式。
ent = data.loc[data['ESC_Command'] == 1600 and data['ESC_Command'].shift() < 1600]
lve = data.loc[data['ESC_Command'] == 1600 and data['ESC_Command'].shift(-1) < 1600]
但是当我运行它时,出现以下错误。
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
如果我在移位时运行'等于1600'或'<1600',我会得到预期的布尔值列表,但是添加逻辑语句会得到该错误。不要以为任何人都可以对我所缺少的东西有所了解吗?
谢谢!
答案 0 :(得分:1)
您将需要使用按位运算符(&
)组合掩码((data['ESC_Command'] == 1600) & (data['ESC_Command'].shift() < 1600)
)。
and
是逻辑运算符,无法比较序列,因此无法比较ValueError
。
此外,您可以使用data['ESC_Command'].max()
在列中动态查找最大值。