gpt4 book ai didi

python - Pandas :如何按平均数量对分组数据框进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:48 26 4
gpt4 key购买 nike

我有一个如下所示的数据框:

Speciality     Amount
Greek 15
Greek 16
Italian 8
Italian 11
Italian 13

我现在汇总了每个专业的平均值和计数:

df_by_spec_count = df.groupby('Speciality').agg(['mean', 'count'])

现在我想打印平均数最高的前 10 个专业。

我已经试过了:

print df_by_spec_count.sort_values(by='count',ascending=False).head()

但是我得到一个 KeyError。我做错了什么?

最佳答案

另一种解决方案是通过 MultiIndex.droplevel 删除顶层:

df_by_spec_count = df.groupby('Speciality').agg(['mean', 'count'])
df_by_spec_count.columns = df_by_spec_count.columns.droplevel(0)
print (df_by_spec_count)

mean count
Speciality
Greek 15.500000 2
Italian 10.666667 3

print (df_by_spec_count.sort_values(by='count',ascending=False).head())
mean count
Speciality
Italian 10.666667 3
Greek 15.500000 2

但更好的解决方案是指定列 Amount 以在 groupby 中进行聚合 - 在列中获取 no Multiindex:

df_by_spec_count = df.groupby('Speciality')['Amount'].agg(['mean', 'count'])
print (df_by_spec_count)
mean count
Speciality
Greek 15.500000 2
Italian 10.666667 3

print (df_by_spec_count.sort_values(by='count',ascending=False).head())
mean count
Speciality
Italian 10.666667 3
Greek 15.500000 2

关于python - Pandas :如何按平均数量对分组数据框进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38126375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com