假设我有以下 Dataframe :
d = {'col1': ["8","8","8","8","8","2","2","2","2","3","3"], 'col2': ['a', 'b','b','b','b','a','b','a','a','a','b'],
'col3': ['m', 'n','z','b','a','ac','b1','ad','a1','a','b1'],'col4': ['m', 'n','z','b1','a','ac1','b31','a1d','3a1','a3','b1']}
test = pd.DataFrame(data=d)
为了对每个包含count
的分组项进行排序,我可以执行以下操作:
test.groupby(["col1",'col2'])['col4'].count().reset_index(name="count").sort_values(["col1","count"],ascending=[True,False]).
它返回此表:
但是,我希望col1
中包含8
的组是第一个条目,因为这个特定的组具有最高的计数(即4)。
我如何实现这一目标?
编辑:这是预期输出:
col1 col2 count
8 b 4
8 a 1
2 a 3
2 b 1
3 a 1
3 b 1
2条答案
按热度按时间2sbarzqh1#
预期的输出不清楚,但假设您希望按计数的降序对每个组中的行进行排序,并按最大(或总计)计数的降序对组进行排序。
输出:
goqiplq22#
在这种情况下,您需要修复您的排序。您的描述有点不清楚,因此是解决您的问题的一般指导方针。
Sort_values从左到右排序,其中第一项定义组的顺序,如果第一项相等,则后面的项定义顺序。
因此,请选择要排序的列的顺序,并正确设置升序参数。