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

Pandas筛选所有年份较上年增幅均大于0的国家分组

Pandas筛选分组内所有记录满足指定条件的实现

前置处理

已完成数据聚合与同比字段计算,对应代码如下:

grouped=exp.groupby(["country","year"])["value"].sum().reset_index().sort_values(["country","year"])
grouped["prev_year"]=grouped.groupby("country")["value"].apply(lambda x:x.shift(1))
grouped["increase_vs_prev_year"]=((100*grouped.value-grouped.prev_year)/grouped.prev_year-100).round(1)

处理后的grouped表包含国家、年份、当年指标值、上年指标值、同比增幅五个核心字段。

需求

筛选出所有统计年份中,increase_vs_prev_year(同比增幅)字段值全部大于0的国家对应的全量记录。

实现代码

# 按国家分组,判断每个国家的所有非空同比增幅是否全部大于0
country_filter = grouped.groupby("country")["increase_vs_prev_year"].apply(
    lambda x: x.dropna().gt(0).all()
)
# 过滤原表,保留符合要求的国家的所有记录
res = grouped[grouped["country"].isin(country_filter[country_filter].index)]

关键说明

  • 每个国家的首年记录没有上年同期数据,同比增幅为空值,判断时用dropna()跳过这类空值,避免结果出错
  • gt(0).all()是分组全满足判断的核心逻辑,只有组内所有非空值都大于0时,对应国家才会被标记为符合要求
  • 如果业务逻辑里首年的同比增幅有自定义填充值,把dropna()替换成对应过滤规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:57:22