【发布时间】:2023-01-26 23:09:14
【问题描述】:
假设我有以下数据框:
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
【问题讨论】:
-
你能提供明确的预期输出吗?
-
这是预期的,因为您首先按
col1排序,然后按count排序,即sort_values(["col1","count"],ascending=[True,False])。如果你想考虑排序,那么试试sort_values(by=["count"], ascending=False)。但是,这将拆分组成员。您没有提供足够的信息来说明您希望如何对其进行排序。 -
@harryhaller 将按不保留分组项目的计数对所有项目进行排序!
-
@mozway 我添加了预期的输出
-
OK,那就看我下面的回答(虽然我还不清楚你是想用组的最大数还是总数来对组进行排序)
标签: python pandas dataframe group-by