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

如何按国家分组识别连续3年及以上增长率≥6%的时期并计算均值?

识别连续高增长时期并计算平均增长率

已知你已筛选出growth≥0.06的数据集,包含country、years、growth列,需要按国家找出连续3年及以上的高增长时期,生成包含country、period、mean_growth的结果表。以下是基于Pandas的实现方案:

实现步骤

  1. 确保年份列是数值类型,避免字符串排序问题
  2. 按国家分组后,对每组的年份排序(保证时序正确)
  3. 通过计算年份与组内累计索引的差值,标记连续年份的分组
  4. 筛选出分组内数据行数≥3的组(即连续3年及以上)
  5. 对符合条件的组,生成时期字符串(起始年-结束年)并计算平均增长率

代码示例

import pandas as pd

# 替换为你的实际数据集
df = pd.read_csv('your_data.csv')

# 步骤1:确保years是数值类型
df['years'] = pd.to_numeric(df['years'])

# 步骤2-3:按国家分组,计算连续年份的分组键
df = df.sort_values(['country', 'years'])
df['group_key'] = df.groupby('country')['years'].transform(lambda x: x - x.index)

# 步骤4-5:分组筛选并计算结果
result = df.groupby(['country', 'group_key']).filter(lambda g: len(g) >=3) \
           .groupby(['country', 'group_key']).agg(
               period=('years', lambda x: f"{x.min()}-{x.max()}"),
               mean_growth=('growth', lambda x: round(x.mean(), 3))
           ).reset_index(drop=True)

print(result)

针对示例数据的输出结果

country    period  mean_growth
0  Albania  1999-2001        0.133
1  Albania  2006-2008        0.215

关键说明

  • group_key的计算逻辑:连续年份的years - 索引结果相同,非连续年份会产生不同的键,以此区分不同的连续时期
  • filter方法用来过滤掉长度不足3的分组,只保留连续3年及以上的时期
  • agg方法里通过lambda函数生成时期字符串,并计算平均增长率(保留3位小数和示例一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:05:44