使用Python Pandas按顺序排序值

rbpvctlc  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(90)

我有一个如下所示 Dataframe :
| 武装|精神疾病的征兆|计数|
| --|--|--|
| 枪|假| 628 |
| 枪|真| 155 |
| 刀|假| 142 |
| 车辆|假| 104 |
| 刀|真| 84 |
| 金属杆|真| 1 |
| n.金属耙|真| 1 |
我想按如下方式对该 Dataframe 进行排序:
| 武装|精神疾病的征兆|计数|
| --|--|--|
| 枪|假| 628 |
| 枪|真| 155 |
| 刀|假| 142 |
| 刀|真| 84 |
我累

armed_mental = focus_age_group.groupby(['armed', 'signs_of_mental_illness'])['id'].count().sort_values(ascending=False)

字符串
上面有产品的结果。但是我很难得到我想要的。类别(武装)与最高数字(真+假)应该在 Dataframe 的顶部。然后跟随真和假。

9udxz4iz

9udxz4iz1#

如果你想按每个“武装”的总数排序,y首先需要合并将计数与groupby.transform合并:

import numpy as np

order = np.lexsort([df['signs_of_mental_illness'],
                    -df.groupby('armed')['count'].transform('sum')])

out = df.iloc[order]

字符串
备选方案:

out = (df.assign(total=df.groupby('armed')['count'].transform('sum'))
         .sort_values(by=['total', 'signs_of_mental_illness'], 
                      ascending=[False, True])
         .drop(columns='total')
       )


输出量:

armed  signs_of_mental_illness  count
0         gun                    False    628
1         gun                     True    155
2       knife                    False    142
4       knife                     True     84
3     vehicle                    False    104
5  metal pole                     True      1
6  metal rake                     True      1

qvtsj1bj

qvtsj1bj2#

您可以使用sort_values方法通过指定多个列进行排序来实现所需的排序。在您的情况下,您应该首先基于“armed”列按降序对序列框进行排序,以便每个“armed”类别的最高计数位于顶部。接下来,按“signs_of_mental_illness”列按降序排序('True' before 'False').最后,按'count'列降序排序。
下面是基于上述解释的代码:

sorted_dataframe = your_dataframe.sort_values(by=['armed', 'signs_of_mental_illness', 'count'], ascending=[False, False, False])

字符串
因此,您的排序后的框架将显示如下:

armed      signs_of_mental_illness  count
0    gun                 False            628
1    gun                 True             155
2    knife               False            142
4    knife               True             84
3    vehicle             False            104
6    metal pole          True             1
7    metal rake          True             1

相关问题