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

如何基于value_counts结果筛选数据完整的国家数据集子集?

解决方法

你原来的代码报错是因为df["Area"].value_counts()返回的是一个以国家名称为索引的Series,直接用它的布尔结果去索引原DataFrame(原DataFrame的索引是行号),两者索引不匹配,导致KeyError。

正确实现分两种方式:

方法一:先获取符合条件的国家列表,再筛选

  1. 计算每个国家的数据行数,提取出行数等于240的国家:
# 获取数据行数为240的国家列表
valid_countries = df["Area"].value_counts()[df["Area"].value_counts() == 240].index.tolist()
  1. 筛选原DataFrame中属于这些国家的记录:
df_240 = df[df["Area"].isin(valid_countries)]

方法二:用groupby+transform直接筛选

这种方式更简洁,无需单独提取国家列表:

df_240 = df[df.groupby("Area")["Area"].transform("size") == 240]

transform("size")会给每一行返回其所在国家的总数据行数,再和240比较得到布尔索引,直接筛选即可。

注意:如果你的“数据完整”是指每个国家每年都有240行(60年总共有60*240=14400行),那需要把判断条件改成== 14400,上面的代码逻辑不变,只需要修改数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:20:39