
在数据分析场景中,我们经常需要从时间序列或分组数据中识别出关键的“峰值”或“谷值”。例如,在一个交易数据集中,我们可能希望识别连续上涨(HH为True)或连续下跌(LL为True)区间内的最高点或最低点,并只保留这些关键点,而将同一区间内的其他点标记为非关键。
假设我们有一个Pandas DataFrame,其中包含HH和LL两个布尔列,分别表示“高高点”和“低低点”的趋势,以及对应的High和Low数值列。我们的目标是:
以下是示例数据框的创建:
import pandas as pd
mydict = [
{'HH': True, 'LL': False, 'High': 10, 'Low': 1},
{'HH': False, 'LL': True, 'High': 100, 'Low': 20},
{'HH': True, 'LL': False, 'High': 32, 'Low': 1},
{'HH': True, 'LL': False, 'High': 30, 'Low': 1},
{'HH': True, 'LL': False, 'High': 31, 'Low': 1},
{'HH': False, 'LL': True, 'High': 100, 'Low': 40},
{'HH': False, 'LL': True, 'High': 100, 'Low': 45},
{'HH': False, 'LL': True, 'High': 100, 'Low': 42},
{'HH': False, 'LL': True, 'High': 100, 'Low': 44},
{'HH': True, 'LL': False, 'High': 50, 'Low': 1},
]
df = pd.DataFrame(mydict)
print("原始DataFrame:")
print(df)输出的原始DataFrame如下:
原始DataFrame:
HH LL High Low
0 True False 10 1
1 False True 100 20
2 True False 32 1
3 True False 30 1
4 True False 31 1
5 False True 100 40
6 False True 100 45
7 False True 100 42
8 False True 100 44
9 True False 50 1为了解决上述问题,我们需要一个能够识别连续HH或LL块的机制,并在这些块内部执行聚合操作。Pandas的groupby.transform方法是实现这一目标的强大工具。
以上就是在Pandas中按组筛选最大/最小值:识别连续峰谷数据点的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号