熊猫value_counts()降序排列

Bod*_*de 5 python pandas

有一个数据框,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
Run Code Online (Sandbox Code Playgroud)

我执行了以下代码:

df2=pd.DataFrame(df, columns= ['Name','Category'])
df2= df['Name'].groupby(df['Category']).value_counts()
print(df2)
Run Code Online (Sandbox Code Playgroud)

然后我得到:

 Index             Name
 (1,ABC-SAP)       1              
 (2,CDE-WAS)       3                         
 (3,DEF)           2             
Run Code Online (Sandbox Code Playgroud)

value.counts()不会在NAME列上返回降序。我真的希望按从高到低的降序排列。有什么办法吗?

jez*_*ael 6

对我来说它工作得很好,但你可以测试替代解决方案:

\n\n
df2 = df[\'Name\'].groupby(df[\'Category\']).value_counts()\nprint(df2)\nCategory  Name   \nPri       CDE-WAS    3\n          DEF        2\n          ABC-SAP    1\nName: Name, dtype: int64\n\n\ndf2 = df.groupby(\'Category\')[\'Name\'].value_counts()\nprint(df2)\nCategory  Name   \nPri       CDE-WAS    3\n          DEF        2\n          ABC-SAP    1\nName: Name, dtype: int64\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:

\n\n

要对所有值进行排序,请使用sort_values

\n\n
df1 = df.groupby(\'Category\')[\'Name\'].value_counts().sort_values(as\xe2\x80\x8c\xe2\x80\x8bcending=False)\n
Run Code Online (Sandbox Code Playgroud)\n