我有一个pandas数据框,如下所示:
df = DataFrame({'id':['a132','a132','b5789','b5789','c1112','c1112'], 'value':[0,0,0,0,0,0,]})
df = df.groupby('id').sum()
value
id
a132 0
b5789 0
c1112 0
我想对它进行排序,看起来像:
value
id
b5789 0
c1112 0
a132 0
正在查看数字(尽管是字符串)并按降序排序
答案 0 :(得分:2)
分类提供了一种定义任意排序的合理简便方法
In [35]: df['id'] = df['id'].astype('category')
In [39]: df['id'] = (df['id'].cat.reorder_categories(
sorted(df['id'].cat.categories, key = lambda x: int(x[1:]), reverse=True)))
In [40]: df.groupby('id').sum()
Out[40]:
value
id
b5789 0
c1112 0
a132 0
答案 1 :(得分:2)
一个简单的解决方案是:
df = DataFrame({'id':['a132','a132','b5789','b5789','c1112','c1112'], 'value':[0,0,0,0,0,0,]})
df = df.groupby('id').sum()
df['key'] = df.index
df['key'] = df['key'].str.split('(\d+)').str[1].astype(int)
df = df.sort('key', ascending=False).drop('key', axis=1)
# Result
value
id
b5789 0
c1112 0
a132 0