Datetime索引滚动最大值DataFrame如何添加最大值首次出现日期列
问题解决:为滚动最大值DataFrame新增首次出现日期列
核心逻辑
- 对每个时间点对应的滚动窗口,筛选出价格等于当前滚动最大值的所有记录,取最早一条的索引日期即可实现需求。
完整实现代码
import pandas as pd import pandas_datareader.data as pdr # 基础数据获取及滚动最大值计算(原有逻辑) dfsp = pdr.get_data_yahoo('^GSPC', start='2011-01-01', end='2021-01-01')['Adj Close'] window = 2520 # 将滚动最大值Series转为DataFrame,方便后续新增列 Roll_Max = dfsp.rolling(window, min_periods=1).max().to_frame(name='rolling_max') # 新增列:存储当前滚动最大值的首次出现日期 Roll_Max['first_occur_date'] = dfsp.rolling(window, min_periods=1).apply( lambda s: s[s == s.max()].index[0] ) # 可选:将日期格式转为字符串,匹配你预期的"2011-01-03"输出效果 Roll_Max['first_occur_date'] = Roll_Max['first_occur_date'].dt.strftime('%Y-%m-%d')
效果说明
执行后Roll_Max的first_occur_date列就会存储对应滚动最大值的首次出现日期,第二行返回值为2011-01-03,完全符合预期。
内容的提问来源于stack exchange,提问作者Eesh Naik
相关产品推荐
相关产品推荐

