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

pandas按国家分组温度超阈值后持续标记1的高效实现方案

解决方案

直接使用pandas向量化分组操作即可,性能远高于Python原生循环,20万行数据可在毫秒级完成计算:

df['check'] = df.groupby('Country')['Temp'].transform(lambda x: (x > 26).cummax()).astype(float)

实现逻辑

  • 按Country字段分组,保证不同国家的计算逻辑完全独立
  • 对每个分组内的Temp序列做判断:大于26的位置标记为布尔值True(等价于数值1),否则为False(等价于数值0)
  • 调用cummax()做累积最大值计算:只要序列中出现过一次True,后续所有位置的累积最大值都会保持为True,刚好匹配「一旦超过26度就一直保持1,直到切换国家」的规则
  • 用transform将分组计算结果映射回原DataFrame的对应行,保证索引对齐
  • 最后转float类型,和示例中的0.0/1.0输出格式完全一致

验证示例

用你给出的测试数据执行上述代码,输出结果完全匹配需求:

import pandas as pd
# 构造测试数据
data = {
    "Country": ["Canada"]*5 + ["USA"]*5,
    "Temp": [25,26,27,25,24,25,26,27,23,22]
}
df = pd.DataFrame(data)
# 计算check列
df['check'] = df.groupby('Country')['Temp'].transform(lambda x: (x>26).cummax()).astype(float)
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:54:05