Pandas 按索引计数分组和排序

2024-01-02

假设我有这个数据框

d = {     'Path'   : ['abc', 'abc', 'ghi','ghi', 'jkl','jkl'],
          'Detail' : ['foo', 'bar', 'bar','foo','foo','foo'],
          'Program': ['prog1','prog1','prog1','prog2','prog3','prog3'],
          'Value'  : [30, 20, 10, 40, 40, 50],
          'Field'  : [50, 70, 10, 20, 30, 30] }


df = DataFrame(d)
df.set_index(['Path', 'Detail'], inplace=True)
df
               Field Program  Value
Path Detail                      
abc  foo        50   prog1     30
     bar        70   prog1     20
ghi  bar        10   prog1     10
     foo        20   prog2     40
jkl  foo        30   prog3     40
     foo        30   prog3     50

我可以按任何列对其进行分组和排序...

df_count = df.groupby('Program')
df_count.apply(lambda x: x.sort())

Program Path    Detail  Field   Program Value
prog1   abc     foo       50    prog1   30
        ghi     foo       20    prog1   40
        jkl     bar       10    prog1   30
prog2   abc     bar       70    prog2   20
prog3   ghi     foo       10    prog3   60
        jkl     foo       30    prog3   50

但我真正想要的是按数量对程序进行排序

df['Program'].value_counts()

prog1    3
prog3    2
prog2    1
dtype: int64

就像是

df_count.apply(lambda x: x.sort('Programs'.value_counts()))

最终目标是将其绘制成使条形按升序或降序排列。我怎样才能做到这一点?


你可以只添加count作为一列,然后您可以按它排序:

In [20]:
df['count'] = df['Program'].map(df['Program'].value_counts())
df

Out[20]:
             Field Program  Value  count
Path Detail                             
abc  foo        50   prog1     30      3
     bar        70   prog1     20      3
ghi  bar        10   prog1     10      3
     foo        20   prog2     40      1
jkl  foo        30   prog3     40      2
     foo        30   prog3     50      2

In [23]:
df.sort('count', ascending=False)

Out[23]:
             Field Program  Value  count
Path Detail                             
abc  foo        50   prog1     30      3
     bar        70   prog1     20      3
ghi  bar        10   prog1     10      3
jkl  foo        30   prog3     40      2
     foo        30   prog3     50      2
ghi  foo        20   prog2     40      1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 按索引计数分组和排序 的相关文章

随机推荐

  • Xcode 警告:不可变属性不会被解码,因为它是用无法覆盖的初始值声明的

    运行 Xcode 12 我的 Swift 5 Xcode 项目现在每当Decodable or Codable类型声明一个let具有初始值的常数 struct ExampleItem Decodable let number Int 42
  • 设置混合模式来绘制笔划?

    我查了一下 认为我的问题的答案是 否 但这里是 使用 Javascript 和 canvas 标签 我可以用以下命令绘制漂亮的 alpha 混合线stroke 这很有趣 但我想通过设置笔画的混合模式来更进一步 例如 看起来它正在使用经典的
  • 如何使用 Spring Sleuth 记录 MDC?

    我有一个基于 Spring boot sleuth 的应用程序 一切都按预期进行 我现在有这样的日志 2017 05 04 17 55 52 226 INFO alert 692d0eeca479e216 c3c8b680dc29ad02
  • 在 asp.net mvc 中以编程方式中止 OutputCache 持续时间

    我使用 OutputCache 属性在服务器端缓存操作的 html 输出 很好 它有效 但现在我遇到的情况是内容很少发生变化 但当发生变化时 用户在下一个请求时看到新数据至关重要 那么 有没有办法以编程方式中止页面缓存持续时间 是的 可以使
  • 为什么上标数字的 Unicode 字符显示高度不一样?

    为什么 Unicode 数字上标的显示高度不一样 如果您用上标数字组成两位数 这一点尤其明显 其中一些看起来不错 但其余的看起来彼此格格不入 我错过了什么吗 或者事实就是如此 Like jrturton https stackoverflo
  • 可编程地通过扬声器发出和播放声音 C++

    我正在用本机 vc 不是 Net 制作游戏 我正在寻找一种通过真正的扬声器 不是内部扬声器 播放噪音 可能是 8 位或其他 的方法 我了解 PlaySound 但我不想让我的 EXE 变大 我想对声音进行编程 是否有一种 api 方式 有点
  • PHPExcel:如何设置单元格的日期格式

    我需要将日期保存到 Excel 文件 它必须以 dd mm yyyy 格式 或用户的本地日期格式 输出 并被视为日期 以便其中的一列可以正确排序 这是代码
  • 如何捕获另一个进程的未处理异常?

    我想修改或仅加载 NET 可执行文件 然后处理其未处理的异常 我的目标是制作一个可以发送堆栈跟踪的智能处理程序 假设另一个可执行文件是 NET 应用程序 将其加载到新的AppDomain http msdn microsoft com en
  • Selenium 2.50 不适用于 Firefox 45

    我在使用 Firefox 和 webdriver 时遇到错误 45000 毫秒后无法通过端口 7055 连接到主机 127 0 0 1 火狐版本 45 0 硒 2 50 1 Windows 10 64 位 有没有人遇到类似的问题或知道解决方
  • 实施的标签系统中的错误

    我按照 Hartl 的教程制作了一个带有标记系统的 ToDoList 也借助了这个单词指南 https medium com sherzelsmith add a filtering multiple tag system with aut
  • C# - SSL 与 Websphere MQ 版本 7.0.1

    使用 C 连接到启用 SSL 的队列管理器时 需要设置哪些值才能使队列正常工作 我目前收到此错误 原因代码 2393 MQRC SSL INITIALIZATION ERROR 在我的代码中 我设置 MQEnvironment SSLKey
  • 结帐页面上的返回购物车按钮

    有什么解决方案可以显示 返回购物车 WooCommerce 结帐页面上的按钮 实际上只有一个完整的订单按钮 但是如果用户想要更正他的订单 我们需要一个后退按钮 Thanks 是的 可以在结帐页面上使用 返回购物车 按钮显示自定义通知 这是自
  • Powershell / VSTS 构建 - 独立存储凭据/与用户运行脚本无关

    我正在尝试为构建创建一个脚本 用于签出文件 编辑文件并将其重新签入 我希望它在作为开发人员或构建代理运行时能够工作 我有一个类似的解决方案this https stackoverflow com a 25455769 852806 密码存储
  • 将大型本地数据库与服务器数据库同步(MySQL)

    我需要每周将大型 3GB 40 表 本地 MySQL 数据库同步到服务器数据库 这两个数据库完全相同 本地数据库不断更新 大约每周服务器数据库都需要使用本地数据更新 您可以将其称为 镜像数据库 或 主 主 但我不确定这是否正确 目前数据库仅
  • 编辑 swf 文件中的动作脚本

    我已经尝试了 10 个小时来编辑这个 swf 文件 它看起来与反编译器中的预期完全一样 但是当我将其导出到闪存时 它是一个空白画布 并且我无法访问操作脚本 我想做的只是在动作脚本中编辑一些东西 我什至不碰电影 有没有更简单的方法来做到这一点
  • Android Studio,logcat 在应用程序关闭后清理

    自从 Android Studio 更新 1 2 Beta 以来 我的 logcat 遇到了问题 当我运行我的应用程序时 它会像平常一样记录所有内容 然后我的应用程序崩溃了 应用程序说 不幸的是 游戏已停止 几秒钟后 Android 会关闭
  • 使用 Jquery 更改页面标题

    如何进行动态变化
  • trac-admin /path/to/myproject initenv

    我的 Trac 有问题 我无法创建新项目 在这里 在 path to myproject 中 我应该写什么来代替它 事实上 我的项目路径是 C Users Programmer BitNami Trac Stack 项目 每次它在 BitN
  • C# 析构函数的使用示例

    我正在阅读有关 C 中的析构函数的内容 但我无法为其找到合适的用例 有人可以提供一个用法示例并进行解释吗 非常非常感谢 Update书中的代码示例实现了 Destructor 和 Dispose 方法 请参阅书中的代码片段 class My
  • Pandas 按索引计数分组和排序

    假设我有这个数据框 d Path abc abc ghi ghi jkl jkl Detail foo bar bar foo foo foo Program prog1 prog1 prog1 prog2 prog3 prog3 Valu