Pandas DataFrame 按分类列排序,但按特定类排序

2023-12-11

我想通过使用基于特定列的条目来选择 Pandas 数据框中的顶部条目df_selected = df_targets.head(N).

每个条目都有一个target值(按重要性排序):

Likely Supporter, GOTV, Persuasion, Persuasion+GOTV  

不幸的是如果我这样做

df_targets = df_targets.sort("target")

排序将按字母顺序(GOTV,Likely Supporter, ...).

我希望有一个像这样的关键字list_ordering如:

my_list = ["Likely Supporter", "GOTV", "Persuasion", "Persuasion+GOTV"] 
df_targets = df_targets.sort("target", list_ordering=my_list)

为了解决这个问题,我创建了一个字典:

dict_targets = OrderedDict()
dict_targets["Likely Supporter"] = "0 Likely Supporter"
dict_targets["GOTV"] = "1 GOTV"
dict_targets["Persuasion"] = "2 Persuasion"
dict_targets["Persuasion+GOTV"] = "3 Persuasion+GOTV"

,但这似乎是一种非Pythonic方法。

建议将不胜感激!


我想你需要Categorical带参数ordered=True然后排序sort_values效果很好:

检查文档Categorical:

有序分类可以根据类别的自定义顺序进行排序,并且可以有最小值和最大值。

import pandas as pd

df = pd.DataFrame({'a': ['GOTV', 'Persuasion', 'Likely Supporter', 
                         'GOTV', 'Persuasion', 'Persuasion+GOTV']})

df.a = pd.Categorical(df.a, 
                      categories=["Likely Supporter","GOTV","Persuasion","Persuasion+GOTV"],
                      ordered=True)

print (df)
                  a
0              GOTV
1        Persuasion
2  Likely Supporter
3              GOTV
4        Persuasion
5   Persuasion+GOTV

print (df.a)
0                GOTV
1          Persuasion
2    Likely Supporter
3                GOTV
4          Persuasion
5     Persuasion+GOTV
Name: a, dtype: category
Categories (4, object): [Likely Supporter < GOTV < Persuasion < Persuasion+GOTV]
df.sort_values('a', inplace=True)
print (df)
                  a
2  Likely Supporter
0              GOTV
3              GOTV
1        Persuasion
4        Persuasion
5   Persuasion+GOTV
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas DataFrame 按分类列排序,但按特定类排序 的相关文章

随机推荐

  • 在 C++ 中处理巨大的多维数组

    我正在用 C 设计一款类似于 Minecraft 的游戏 它在内存中保存了大量的地形数据 一般来说 我想在内存中存储一 个数组 即 5 4 5 50 50 50 这还不错 因为它相当于大约 100mb 的虚拟内存 而我的结构只有大约 8 个
  • 为什么重新分配后变量的类型再次变为“未知”

    Why value属于类型unknown分配后再次string to it TypeScript Playground 中的示例 function example boolean let value unknown something ma
  • 如何更改 WooCommerce 订阅中的价格字符串

    我需要一个更好的方法来做到这一点 目前 我已将代码直接添加到 class wc subscriptions product php 文件中的 get price string 函数中 因此当设置免费试用版时 我可以更改添加到价格字符串中的文
  • 为什么“边框颜色”被“颜色”覆盖?

    我有以下CSS isActiveFilter color black background color rgba 0 184 170 5 padding 15px 10px 10px 10px border color red border
  • 检测 UIPopoverController 何时完成呈现 UIImageViewcontroller

    我将 UIImagePickerController 作为 UIPopoverController 的内容视图控制器 我需要检测弹出窗口何时刚刚完成呈现 刚刚出现 UIPopoverController 没有任何委托 我似乎也找不到检测 U
  • 如何让 Geolocation API 在 Dartium 中工作?

    我正在尝试使用 Geolocation API 在 Dartium 浏览器中进行测试 我特别尝试执行以下操作 window navigator geolocation getCurrentPosition then pos window a
  • python 使用字符串列表创建字典,并将字符串长度作为值

    我确信这是可以做到的 但到目前为止我还没有成功 我有一个字符串列表 我想创建一个字典 其中所述字符串的长度 可以表示为范围 作为键 字符串本身作为值 例子 这是类似我的列表 foo bar help this guy 我想最终得到一本这样的
  • 如何找到 PHP 项目中未使用的函数

    如何找到 PHP 项目中未使用的函数 PHP 中是否有内置的功能或 API 可以让我分析我的代码库 例如反射 token get all 这些 API 的功能是否足够丰富 让我不必依赖第三方工具来执行此类分析 您可以尝试 Sebastian
  • C# 列格式设置

    我正在尝试将一些输出格式化到控制台 但解决方案存在一些问题 我在 C 中执行此操作 但每次调用 Console Write 时 它 都会将整个内容打印到控制台的最后 然后开始一个新行 所以我想做的是将其调整为四列 然后在那里开始一个新行 以
  • 返回指针后删除堆

    我有一个如下的功能 int readFile string InputPath int myvar new int 10 The file has 10 lines Using heap ifstream inFile inFile ope
  • 带有参数的 Facebook 帖子

    我需要在 Facebook 上发布带有参数的帖子 我使用了这里的解决方案 动态生成 Facebook Open Graph 元标签和这里 WordPress PHP 中的动态 Facebook 和元标签 最终工作代码
  • 使用 WatiN 进行自动完成下拉菜单测试

    我正在使用 WatiN 来测试自动完成下拉列表 当用户在输入 3 个字符后在字段中键入时 将触发 jquery 自动完成并显示无序列表 用户必须从列表中进行选择 我无法使用 WatiN 从列表中进行选择 触发自动完成 以下是开发人员使用的一
  • ASP.NET Ajax 客户端框架无法加载。当将 ScriptManager 放在空白页上时

    我有一个错误Microsoft JScript 运行时错误 ASP NET Ajax 客户端框架无法加载 使用母版页在空白页上
  • GGplot2 中面板背景的条件格式

    我想知道是否有一种 直接 方式将 ggplot 分面面板中回归线的斜率链接到该面板的背景颜色 即在视觉上将大网格中的正斜率与负斜率分开 我了解如何在 GGplots 中添加回归线 正如上所解释的那样使用 R 中的 qplot 将回归线添加到
  • 使用 simpledateformat 将日期转换为字符串

    我在将日期转换为不同格式的字符串时遇到问题 日期 lastDownloadDate gt gt Wed Feb 27 16 20 23 IST 2013 lastChangeDate gt gt Wed Feb 27 15 11 00 IS
  • 在 ckeditor5 下拉项上注册点击侦听器

    我目前正在尝试编写一个插件CK编辑器5支持自动翻译 我发现如何编写插件以及如何在文档中创建下拉菜单 但在文档中没有提及 或者我错过了 如何获知有关单击值的信息 打开下拉列表的按钮有一个执行处理程序 但如何注册一个监听器来单击其中一个值 我可
  • Prolog插入排序

    有一个简单的Prolog插入排序算法 sorting A B Sorted sorting B SortedTail insert A SortedTail Sorted sorting insert A B C B D A gt B in
  • R 中每年的数据摘要

    我有一个包含两列的数据 一列中是日期 另一列中是流量数据 我能够将数据读取为日期和流量数据 我使用了以下代码 creek lt read csv creek csv library ggplot2 creek 1 10 colnames c
  • 如何使用 THREE.js 将样条线挤出到场景的原点

    当我尝试将样条线挤出到场景的原点时 我感到头疼 这就是我想做的 我正在创建一个样条线 let centerX 0 let centerY 0 let radius 200 let coils 50 let rotation 2 Math P
  • Pandas DataFrame 按分类列排序,但按特定类排序

    我想通过使用基于特定列的条目来选择 Pandas 数据框中的顶部条目df selected df targets head N 每个条目都有一个target值 按重要性排序 Likely Supporter GOTV Persuasion