【问题标题】:taking top 3 in a groupby, and lumping rest into 'other category'在 groupby 中获得前 3 名,并将其余部分归为“其他类别”
【发布时间】:2021-03-08 20:15:07
【问题描述】:

我目前正在像这样在 pandas 中进行 groupby:

df.groupby(['grade'])['students'].nunique())

我得到的结果是这样的:

grade
grade 1                      12
grade 2                       8
grade 3                      30
grade 4                       2
grade 5                     600
grade 6                      90

有没有办法让我看到前 3 名的组,而其他所有内容都归类为其他?

这就是我要找的东西

grade
grade 3                      30
grade 5                     600
grade 6                      90
other (3 other grades)       22

【问题讨论】:

  • 您能否发布为您提供输出的初始数据集,以便其他人可以重现输入?

标签: python-3.x pandas jupyter-notebook


【解决方案1】:

如果没有实际的输入数据就不能做很多事情,但如果这是你的 groupby 之后的起始数据框 (df) -

     grade  unique
0  grade_1      12
1  grade_2       8
2  grade_3      30
3  grade_4       2
4  grade_5     600
5  grade_6      90

您可以再执行几个步骤来到达您的餐桌 -

ddf = df.nlargest(3, 'unique')
ddf = ddf.append({'grade': 'Other', 'unique':df['unique'].sum()-ddf['unique'].sum()}, ignore_index=True)
     grade  unique
0  grade_5     600
1  grade_6      90
2  grade_3      30
3    Other      22

【讨论】:

    【解决方案2】:

    我认为您可以在 df 中添加一个辅助列,并将其称为“分组”。 将前 3 行命名为原始名称,将其余行命名为“其他”,然后按“分组”列分组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多