按照区间列对DataFrame进行排序

3

我的输出结果看起来像这样:

     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)但是它并没有起作用...谢谢!

1
type(df['binnedb']) 是什么? - cs95
一个 bin:bins = np.linspace(0, 1, num=100) - Viktor.w
它打印出以下内容:<class 'pandas.core.series.Series'>。 - Viktor.w
它的范围是从0.00到1,包括0.00但不包括1。 - Viktor.w
打印 df['binnedb'].cat.codes 会起作用还是会报错? - cs95
显示剩余2条评论
2个回答

4

由于它是interval类型的列,您可以使用left获取左侧范围并基于其进行排序。

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

谢谢您的回答,但是第一行代码似乎没有考虑区间的左值... 有什么想法吗? - Viktor.w

3

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

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

@W-B,也祝你一切顺利 :) - cs95
1
@AmiTavory 没问题。原始链接是 https://dev59.com/YVQJ5IYBdhLWcg3wZlGZ#53927461 但实际上,我在我的关于我页面下的“(主动维护)Pandas规范”的标题下列出了我写过的所有Pandas规范(它们全都是上个月写的)。如果你有时间,请浏览一下。再次感谢 :) - cs95

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接