Python/Pandas-在趋势转变时应用标签(识别数据集中的局部最大值和最小值)

标签 python pandas loops csv

因此,我有一个 CSV,其中包含股票价格,并且对于每一天(行),我都有一个相应的列,显示价格较前一天是上涨还是下跌。

任务:我想识别波峰和波谷(参见示例屏幕截图)。 逻辑:趋势变化之前的最后一个“增加”单元格应标记为“峰值”。 同样对于减少...

enter image description here 我猜这将使用带有中断/继续的循环。 我将非常感谢编写代码的确切建议。

谢谢!

最佳答案

这是一个使用 pandasnumpy 功能的矢量化解决方案。

import pandas as pd, numpy as np

df = pd.DataFrame({'seq': ['inc', 'dec', 'inc', 'inc', 'inc', 'dec', 'dec', 'dec', 'inc']})

df['mark'] = df['seq'].map({'inc': 1, 'dec': -1}).diff().shift(-1).map(np.sign).fillna(0)
df['mark'] = df['mark'].map({-1: 'peak', 1: 'trough', 0: ''})

#    seq    mark
# 0  inc    peak
# 1  dec  trough
# 2  inc        
# 3  inc        
# 4  inc    peak
# 5  dec        
# 6  dec        
# 7  dec  trough
# 8  inc        

关于Python/Pandas-在趋势转变时应用标签(识别数据集中的局部最大值和最小值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49667502/

相关文章:

python - 使用 CSS/HTML/Python/SASS(但没有 JS)根据值更改表格单元格的背景颜色?不需要动态

python - 多索引数据框中列之间的数学运算

python - 如何在没有循环的情况下将负元素转换为零?

java - For循环转换While循环

python - 在 Keras 中添加自定义均方根误差

python - Pandas 排序行值

python - 如何将多个数据框附加到一个数据框中

python - 如何使用for循环获取pandas数据帧所有列中的总重复项数?

java - 循环验证

php - 有没有更有效的方法来压缩这些mysql查询?