以不按字母顺序排列的方式对pandas数据框中的行进行排序

时间:2014-12-02 22:34:33

标签: python sorting pandas

我有一些数据帧(df),其分类数据以:a,b,c和“剩余类别”的类别开头。

我想在dataframe ascending = true中对month列进行排序,但是然后对category列进行排序,使它们按以下顺序排列:

c

a

b

“剩余类别”

这可能吗? - >基本上我想要一个特定列的自定义排序顺序,但是然后将月份列按日期顺序排序。

2 个答案:

答案 0 :(得分:1)

文档是here

In [8]: df = DataFrame({'A' : [1,1,1,2,2,3], 'B' : list('bbcdae') })

In [9]: df.dtypes
Out[9]: 
A     int64
B    object
dtype: object

In [10]: df['B'] = pd.Categorical(df['B'],categories=list('ghbaedfc'))

In [11]: df
Out[11]: 
   A  B
0  1  b
1  1  b
2  1  c
3  2  d
4  2  a
5  3  e

In [12]: df.dtypes
Out[12]: 
A       int64
B    category
dtype: object

In [13]: df.sort(['B','A'])
Out[13]: 
   A  B
0  1  b
1  1  b
4  2  a
5  3  e
3  2  d
2  1  c

答案 1 :(得分:0)

您可以使用词典并添加新的'排序'列到您的数据框。看看这个类似的问题Custom sorting with Pandas