如何验证分组后最新metric值是否高于旧值并触发警告
DataFrame分组metric趋势验证方案
实现步骤
- 按
category、level、type维度分组 - 每组内按
date排序,区分新旧日期对应的metric值 - 对比最新日期与旧日期的
metric,若最新值未高于旧值则触发警告
代码实现
import pandas as pd import warnings # 构建示例数据(与给定结构一致) df = pd.DataFrame({ 'category': ['c1', 'c1', 'c2', 'c2', 'c2', 'c2'], 'date': ['d1', 'd2', 'd1', 'd2', 'd1', 'd2'], 'level': ['l1', 'l1', 'l2', 'l2', 'l2', 'l2'], 'type': ['t1', 't1', 't1', 't1', 't2', 't2'], 'metric': [0.5, 0.4, 0.7, 0.6, 0.8, 0.9] }) def verify_trend(group): # 按日期排序,确保旧日期在前 sorted_group = group.sort_values('date') old_val = sorted_group['metric'].iloc[0] latest_val = sorted_group['metric'].iloc[-1] if latest_val <= old_val: # 提取分组标识 cat, lvl, typ = sorted_group[['category', 'level', 'type']].iloc[0] warnings.warn(f"分组({cat}, {lvl}, {typ}):最新日期metric值({latest_val})未超过旧日期值({old_val})") return group # 应用分组验证 df.groupby(['category', 'level', 'type']).apply(verify_trend)
关键说明
- 若
date为datetime类型,排序逻辑无需调整;若为自定义格式字符串,需确保排序能正确反映日期先后顺序 - 警告信息可根据需求修改,比如添加具体日期参数
内容的提问来源于stack exchange,提问作者Fernando Quintino
相关产品推荐
相关产品推荐

