首页 > 解决方案 > 如何按组统计观察频率

问题描述

我有一个按每年最高值(列指标值)排序和分组的数据框。它给了我每年指标值最高的国家。我的数据框中有 212 个国家,我有 1960 年到 2014 年的年份。

下一步,我想看看哪些 5 个国家在所有可用年份中进入前 10 名的年份最多。因此,对于所有国家/地区,我想记录他们每年进入前 10 名的次数,并查看哪些国家/地区的前 10 名放映量更高。我想要的输出是计算一个国家每年出现在前十名中的次数。我怎样才能做到这一点?这是我到目前为止所拥有的:

gp = (Emissions_C_CO2.sort_values(['Year', 'Indicator_Value'], ascending=[True, False]).groupby(['Year', 'Country_Code']).head(10))

标签: python-3.xpandas

解决方案


尝试这个:

result = (
    Emissions_C_CO2.sort_values('Indicator_Value', ascending=False)
        .groupby('Year').head(10)
        .groupby('Country_Name').size()
        .sort_values(ascending=False)
)

解释:

  • 按降序对数据框进行Indicator_Value排序
  • 每年,获得前 10 个国家
  • 对于每个国家/地区,计算它在前 10 名列表中出现的次数
  • 对结果进行降序排序

这些是链接方法,因此上一步的输出成为下一步的输入。


推荐阅读