You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在if条件中引用前行值,实现pandas股价连续新高次数统计?

解决方案

实现思路

  • 先逐行判断当前股价是否高于前一行股价,生成布尔标记
  • 对未创新高的位置做分组标记,连续创新高的行都会被分到同一组
  • 在每个分组内做累计计数,即可得到连续创新高的次数,未创新高的行计数自动归0

完整代码

import pandas as pd
data=[[150,0],[275,0],[300,0],[280,0],[300,0],[350,0],[400,0]]
df=pd.DataFrame(data,columns=['Stock Price','Number of higher highs'])

# 判断当前股价是否高于前一日
df['is_higher'] = df['Stock Price'] > df['Stock Price'].shift(1)
# 生成连续创新高区间的分组标识
df['group'] = (~df['is_higher']).cumsum()
# 分组累计计数得到连续新高次数
df['Number of higher highs'] = df.groupby('group').cumcount()

# 删除计算过程中的辅助列
df = df.drop(columns=['is_higher', 'group'])

print(df)

输出结果

运行后得到的df和你要求的效果完全一致:

Stock PriceNumber of higher highs
1500
2751
3002
2800
3001
3502
4003

内容的提问来源于stack exchange,提问作者lindstroem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 00:06:03