首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对列值进行多级索引排序

如何对列值进行多级索引排序
EN

Stack Overflow用户
提问于 2019-05-20 11:34:12
回答 1查看 1K关注 0票数 2

我试图在多级索引中对数据进行分类,以实现可视化。此时,纯粹是根据值对数据进行排序。

我尝试过使用sort_index和sort_values,但是两者都没有起作用。我假设有一种结合2的方法,对我来说还不清楚。

示例代码

代码语言:javascript
复制
import pandas as pd

data = {'lev1':[1,1,2,2], 
        'lev2':['item1', 'item2', 'item3', 'item2'], 
        'col1':[.55, .44, .22, .34],
        'col2':[.54, .86, .55, .44]}

df = pd.DataFrame(data=data)
df.set_index(['lev1', 'lev2'], inplace=True)

这应导致:

代码语言:javascript
复制
                col1    col2
    lev1 lev2       
    1   item1   0.55    0.54
        item2   0.44    0.86
    2   item3   0.22    0.55
        item2   0.34    0.44

我希望看到的是根据col2中的值排序的输出。然而,保持多级指数不变。

也就是说,结果应该显示:

代码语言:javascript
复制
                col1    col2
    lev1 lev2       
    1   item2   0.44    0.86
        item1   0.55    0.54
    2   item3   0.22    0.55
        item2   0.34    0.44

欢迎任何想法或建议。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-05-20 11:36:30

对于 0.23+可以按索引和按DataFrame.sort_values列进行排序。

代码语言:javascript
复制
df = df.sort_values(['lev1','col2'], ascending=[True, False])
print (df)
            col1  col2
lev1 lev2             
1    item2  0.44  0.86
     item1  0.55  0.54
2    item3  0.22  0.55
     item2  0.34  0.44

对于较低版本的熊猫,需要DataFrame.reset_index,排序,然后是DataFrame.set_index

代码语言:javascript
复制
df = (df.reset_index()
        .sort_values(['lev1','col2'], ascending=[True, False])
        .set_index(['lev1','lev2']))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56220188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档