有一个数据框,df
Index Date Name Category
0 2017-08-09 ABC-SAP 1
1 2017-08-09 CDE-WAS 2
2 2017-08-10 DEF 3
3 2017-08-11 DEF 3
4 2017-08-11 CDE-WAS 2
5 2017-08-11 CDE-WAS 2
我执行了这段代码:
df2=pd.DataFrame(df, columns= ['Name','Category'])
df2= df['Name'].groupby(df['Category']).value_counts()
print(df2)
然后我得到:
Index Name
(1,ABC-SAP) 1
(2,CDE-WAS) 3
(3,DEF) 2
value.counts()不会在NAME列上返回降序。我真的希望从最高到最低的数量按降序排列。这样做的任何方式?
答案 0 :(得分:3)
对我来说它工作得很好,但你可以测试替代解决方案:
df2 = df['Name'].groupby(df['Category']).value_counts()
print(df2)
Category Name
Pri CDE-WAS 3
DEF 2
ABC-SAP 1
Name: Name, dtype: int64
df2 = df.groupby('Category')['Name'].value_counts()
print(df2)
Category Name
Pri CDE-WAS 3
DEF 2
ABC-SAP 1
Name: Name, dtype: int64
编辑:
要对所有值进行排序,请使用sort_values
:
df1 = df.groupby('Category')['Name'].value_counts().sort_values(ascending=False)