我有一个如下所示的数据框:
Speciality Amount
Greek 15
Greek 16
Italian 8
Italian 11
Italian 13
Run Code Online (Sandbox Code Playgroud)
我现在汇总了每个专业的平均值和计数:
df_by_spec_count = df.groupby('Speciality').agg(['mean', 'count'])
Run Code Online (Sandbox Code Playgroud)
现在我想打印平均值最高的前 10 个专业。
我试过这个:
print df_by_spec_count.sort_values(by='count',ascending=False).head()
Run Code Online (Sandbox Code Playgroud)
但我收到一个 KeyError 错误。我究竟做错了什么?
您有分层列,因此需要传递一个元组来选择要排序的适当列级别:
In [324]:
df_by_spec_count.sort_values(by=('Amount','count'),ascending=False).head()
Out[324]:
Amount
mean count
Speciality
Italian 10.666667 3
Greek 15.500000 2
Run Code Online (Sandbox Code Playgroud)
如果您查看原始分组结果,您就会明白原因:
In[321]:
df_by_spec_count
Out[321]:
Amount
mean count
Speciality
Greek 15.500000 2
Italian 10.666667 3
In [325]:
df_by_spec_count.columns
Out[325]:
MultiIndex(levels=[['Amount'], ['mean', 'count']],
labels=[[0, 0], [0, 1]])
Run Code Online (Sandbox Code Playgroud)