在间隔列上对DataFrame进行排序

时间:2018-12-31 15:04:40

标签: python pandas sorting dataframe categories

我的输出看起来像这样:

     binnedb   Proba-A   Proba-B Esperance-A Esperance-B
0    (0.0101, 0.0202]  0.547826  0.539130    0.007817    0.007693
1    (0.0302, 0.0402]  0.547826  0.539130    0.005963    0.005854
2    (0.0201, 0.0302]  0.547826  0.539130    0.008360    0.008227

我想做的是基于binnedb列以升序对df排序(也将以升序排序)。如果您不明白这个问题,请告诉我。那是我到目前为止尝试过的:df.sort_values(by=['binnedb'], ascending = False)

但是它不起作用...谢谢!

2 个答案:

答案 0 :(得分:2)

间隔列实际上是遵循特定顺序的分类列。如果“ binnedb”是类别列,则可以访问其类别代码并使用argsort

df = df.iloc[df['binnedb'].cat.codes.argsort()]

答案 1 :(得分:2)

由于它是inverval类型的列,因此您可以使用left来获得左范围并对其进行排序。

df['sortkey']=df.binnedb.map(lambda x : x.left)
df=df.sort_values('sortkey')