【问题标题】:Can't sort values after aggregation using Pandas dataframe使用 Pandas 数据框聚合后无法对值进行排序
【发布时间】:2021-01-04 06:51:07
【问题描述】:

我有以下数据框:

df[['ID','Team']].groupby(['Team']).agg([('total','count')]).reset_index("total").sort_values("count")

我基本上,需要按团队计算ID的数量,然后按ID的总数排序。

聚合部分很好,它给了我预期的结果。但是当我尝试排序部分时,我得到了这个:

KeyError: 'Requested level (total) does not match index name (Team)'

我做错了什么?

【问题讨论】:

  • 试试这个 df[['ID','Team']].groupby(['Team']).agg([('total','count')]).reset_index() .sort_values("count")

标签: python pandas sorting aggregate-functions


【解决方案1】:

使用名称聚合在聚合函数中指定新列名称,从DataFrame.reset_index 中删除total

df = pd.DataFrame({
        'ID':list('abcdef'),
        'Team':list('aaabcb')
})

df = df.groupby('Team').agg(count=('ID','count')).reset_index().sort_values("count") 
print (df)
  Team  count
2    c      1
1    b      2
0    a      3

您的解决方案应该通过在groupby 之后指定列进行更改,然后在元组中使用聚合函数指定新列名,最后还要从reset_index 中删除total

df = df.groupby('Team')['ID'].agg([('count','count')]).reset_index().sort_values("count")
print (df)
  Team  count
2    c      1
1    b      2
0    a      3

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 2013-06-05
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2021-06-25
    • 2023-04-03
    相关资源
    最近更新 更多