在间隔列上对 DataFrame 进行排序

Sort DataFrame on column of intervals

我的输出如下所示:

     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)

但是不行...谢谢!

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

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

因为它是 inverval 类型的列,您可以使用 left 获取左侧范围并根据它进行排序。

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