按列降序排序分组

3 投票
2 回答
2943 浏览
提问于 2025-04-18 18:52
sample = pd.DataFrame({'Cat':['A','B','C','A','B','C','A','B','C'], 
                       'Year':[2001,2002,2003,2001,2002,2003,2001,2002,2003]})

for s in sample.groupby(['Year']):
    print s[0]

这样做会得到

2001
2002
2003

我该怎么把分组结果按降序排序,以便得到..

2003
2002
2001

2 个回答

0

你可以用下面的方式对一个pandas数据框进行升序或降序排序:

result = df.sort(['Year'], ascending=0 )

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort.html

3

我觉得你最好的办法是提前把数据框按降序排列好,然后在进行分组操作时传入 sort=False,这样数据就不会被重新排序了。

In [78]: sample = sample.sort(['Year'], ascending=False)

In [79]: for s in sample.groupby(['Year'], sort=False):
    ...:     print s[0]
    ...:     
2003
2002
2001

撰写回答