# set up dummy example
df = pd.DataFrame({'date': pd.date_range('2023-03-10', '2023-05-31', freq='D'),
'value': range(83)})
# compute groups of 0-30, 30-60, 60-90 days after min date
group = pd.cut(df['date'].sub(df['date'].min()).dt.days,
[0, 30, 60, 90], right=True)
# aggregate
out = df.groupby(group)['value'].agg(['min', 'max'])
输出:
min max
date
(0, 30] 1 30
(30, 60] 31 60
(60, 90] 61 82
1条答案
按热度按时间dgiusagp1#
您的问题缺少示例,但您肯定可以将
cut
和groupby.agg
结合起来:输出:
如果您更希望30天内的
rolling
最小值/最大值(但这会提供所有组合:1-30、2-31、3-32等,直至61-90):输出: