使用 Pandas 数据框聚合后无法对值进行排序
Posted
技术标签:
【中文标题】使用 Pandas 数据框聚合后无法对值进行排序【英文标题】:Can't sort values after aggregation using Pandas dataframe 【发布时间】: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") 【参考方案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
【讨论】:
以上是关于使用 Pandas 数据框聚合后无法对值进行排序的主要内容,如果未能解决你的问题,请参考以下文章