在列和索引的值上对pandas数据帧进行排序?

 平凡天仙 发布于 2023-02-13 20:45
  • php
  • 是否可以按列的值对pandas数据帧进行排序,还可以通过索引进行排序?

    如果按列的值对pandas数据框进行排序,则可以按列对结果数据框进行排序,但不幸的是,您会看到数据框索引的顺序在排序列的相同值内混乱.

    那么,我可以按列对数据框进行排序,例如命名列,count还可以按索引值对其进行排序?是否可以按降序对列进行排序,但是按升序对索引进行排序?

    我知道如何在数据框中对多个列进行排序,并且还知道我可以通过首先reset_index()对索引进行排序并对其进行排序,然后再次创建索引.但这样做是否更直观,更有效?

    3 个回答
    • 熊猫0.23终于让你在那里:-D

      您现在可以将索引名称(而不仅仅是列名称)作为参数传递给sort_values.所以,这个单线工程:

      df = df.sort_values(by = ['MyCol', 'MyIdx'], ascending = [False, True])
      

      如果您的索引当前未命名:

      df = df.rename_axis('MyIdx').sort_values(by = ['MyCol', 'MyIdx'], ascending = [False, True])
      

      2023-02-13 20:48 回答
    • 截至pandas版本0.22.

      您可以临时将列设置为索引,对该列上的索引进行排序,然后重置.默认情况下,它将维护现有索引的顺序:

      df = df.set_index('column_name', append=True).sort_index(level=1).reset_index(level=1)
      

      我认为以上可以通过'inplace'选项完成,但我认为它更容易阅读如上所述.

      2023-02-13 20:48 回答
    • 编辑 在pandas 0.23中你可以直接进行 - 参见OmerB的回答.


      我敢说,最简单的方法是将索引复制到一列,然后按两者排序.

      df['colFromIndex'] = df.index
      df = df.sort(['count', 'colFromIndex'])
      

      我也希望能够做一些类似的事情df.sort(['count', 'index']),但当然这不起作用.

      2023-02-13 20:51 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有