首页 > 解决方案 > Pandas 数据框:查找值从 x 变为 y 的位置

问题描述

我试图在数据帧中找到数据达到最大值的点,保持一段时间,然后再次下降(见下图)。

在此处输入图像描述

我试图找到索引值第一次达到最大值的位置以及它第一次离开它的位置。我已经尝试过以下方式。

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().

如果我使用 shift 运行“等于 1600”或“< 1600”,我会得到预期的布尔列表,但添加逻辑语句会导致该错误。不要以为任何人都可以阐明我所缺少的东西吗?

提前致谢!

标签: pythonpandasdataframe

解决方案


您将需要使用按位运算符 ( &) 来组合您的掩码 ( (data['ESC_Command'] == 1600) & (data['ESC_Command'].shift() < 1600))。

and是逻辑运算符,无法比较系列,因此ValueError.


此外,您可以使用data['ESC_Command'].max()动态查找列中的最大值。


推荐阅读