python - 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”,我会得到预期的布尔列表,但添加逻辑语句会导致该错误。不要以为任何人都可以阐明我所缺少的东西吗?
提前致谢!
解决方案
您将需要使用按位运算符 ( &
) 来组合您的掩码 ( (data['ESC_Command'] == 1600) & (data['ESC_Command'].shift() < 1600)
)。
and
是逻辑运算符,无法比较系列,因此ValueError
.
此外,您可以使用data['ESC_Command'].max()
动态查找列中的最大值。
推荐阅读
- hbase - HBase 从源重新加载表数据 - 对用户透明
- ruby - Ruby:帮助改进散列算法
- javascript - Javascript 包(CircleType 未定义)
- amazon-web-services - AWS Cloud Formation Stack 的创建和计划删除
- css - 为什么这个文本在 Firefox 中太宽?
- date - Netezza 如何从 MON DD YYYY hh:mi am 格式的字符中读取日期时间。我得到一个无效的日期
- mysql - 回滚失败的 SQL 查询
- algorithm - 近似数查找算法
- 3d - 如何在处理中围绕另一个点旋转 3D 对象?
- python - PJSIP 从来电中获取任意 SIP 标头