查找数据框中每行的前 N ​​列

2023-11-24

给定一个包含一个描述性列和 X 个数字列的数据框,对于每一行,我想识别具有较高值的​​前 N ​​列,并将其保存为新数据框上的行。

例如,考虑以下数据框:

df = pd.DataFrame()
df['index'] = ['A', 'B', 'C', 'D','E', 'F']
df['option1'] = [1,5,3,7,9,3]
df['option2'] = [8,4,5,6,9,2]
df['option3'] = [9,9,1,3,9,5]
df['option4'] = [3,8,3,5,7,0]
df['option5'] = [2,3,4,9,4,2]

enter image description here

我想输出(假设 N 是 3,所以我想要前 3 个):

A,option3
A,option2
A,option4

B,option3
B,option4
B,option1

C,option2
C,option5
C,option4 (or option1 - ties arent really a problem)

D,option5
D,option1
D,option2

and so on....

知道如何轻松实现这一点吗? 谢谢


如果你只是想要配对:

from operator import itemgetter as it
from itertools import repeat
n = 3

 # sort_values = order pandas < 0.17
new_d = (zip(repeat(row["index"]), map(it(0),(row[1:].sort_values(ascending=0)[:n].iteritems())))
                 for _, row in df.iterrows())
for row in new_d:
    print(list(row))

Output:

[('B', 'option3'), ('B', 'option4'), ('B', 'option1')]
[('C', 'option2'), ('C', 'option5'), ('C', 'option1')]
[('D', 'option5'), ('D', 'option1'), ('D', 'option2')]
[('E', 'option1'), ('E', 'option2'), ('E', 'option3')]
[('F', 'option3'), ('F', 'option1'), ('F', 'option2')]

这也维持了秩序。

如果你想要一个列表的列表:

from operator import itemgetter as it
from itertools import repeat
n = 3

new_d = [list(zip(repeat(row["index"]), map(it(0),(row[1:].sort_values(ascending=0)[:n].iteritems()))))
                 for _, row in df.iterrows()]

Output:

[[('A', 'option3'), ('A', 'option2'), ('A', 'option4')],
[('B', 'option3'), ('B', 'option4'), ('B', 'option1')], 
[('C', 'option2'), ('C', 'option5'), ('C', 'option1')], 
[('D', 'option5'), ('D', 'option1'), ('D', 'option2')], 
[('E', 'option1'), ('E', 'option2'), ('E', 'option3')],
[('F', 'option3'), ('F', 'option1'), ('F', 'option2')]]

或者使用 python 排序:

new_d = [list(zip(repeat(row["index"]), map(it(0), sorted(row[1:].iteritems(), key=it(1) ,reverse=1)[:n])))
                     for _, row in df.iterrows()]

这实际上是最快的,如果你真的想要字符串,那么按照你想要的方式格式化输出是非常简单的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找数据框中每行的前 N ​​列 的相关文章

  • 在Python中选择长度为n的随机列表元素

    我知道你可以使用 random choice 从列表中选择一个随机元素 但我试图选择长度为 3 的随机元素 例如 list1 a b c d e f g h 我希望输出看起来像这样 c d e 本质上我想从列表中生成随机子列表 Use ra
  • 从 Python 查找应用程序的版本?

    基本上 我试图找出用户当前安装的 ArcGIS 版本 我查看了注册表 但找不到与版本字符串相关的任何内容 但我知道它存储在 exe 中 我已经做了相当多的谷歌搜索 但找不到任何真正值得的东西 我尝试使用 GetFileVersionInfo
  • Pandas - Python,根据日期列删除行

    我正在尝试根据一个日期列删除数据框的行 Delivery Date 我需要删除超过 6 个月但不等于 1970 年份的行 我创建了 2 个变量 from datetime import date timedelta sixmonthago
  • 调用 tf.linalg.inv 时,TensorFlow 崩溃并显示无法创建 cuSolverDN 实例

    我正在运行tensorflow tensoflow latest gpu码头集装箱 我可以运行简单的向量运算 例如 矩阵乘法没有问题 但是 当我运行以下最小示例时 import tensorflow as tf tf linalg inv
  • Keras Predict_classes 方法返回“列表索引超出范围”错误

    我对 CNN 和机器学习总体来说是新手 并且一直在尝试遵循 TensorFlow 的图像分类教程 现在 可以找到Google Colabhere https colab research google com drive 1gwZp7 t
  • 在 Google App Engine 中使用 sqlite3?

    我正在尝试将我的 Python Django 项目部署到 Google App Engine 现在它在我的本地计算机上运行良好 但是当我尝试将其作为 Google App Engine 中的项目运行时 出现以下错误 ImproperlyCo
  • 为什么我不能使用 `strip('\"')` 删除引号?

    我只能使用删除左引号str strip with open filename r as fp for line in fp readlines print line line line strip print line 部分结果 Route
  • 在Python中复制字典的快速方法

    我有一个经常与字典一起使用的Python 程序 我必须把字典复印数千次 我需要密钥和相关内容的副本 副本将被编辑 并且不得链接到原始文件 例如 副本中的更改不得影响原始文件 键是字符串 值是整数 0 1 我目前使用一个简单的方法 newDi
  • 如何在 Django 1.9.6 中创建超级用户帐户

    我正在读一本关于 Django 的书 Sanjeev Jaiswal 和 Ratan Kumar 所著的 学习 Django Web 开发 但这本书是基于 Django 的早期版本 1 9 版本之前 的 为了用表填充数据库 本书使用了syn
  • 无法解码 JSON 对象 - tastypie -curl

    我逐字逐句地遵循 tastypie 教程 直到到达帖子部分 http django tastypie readthedocs org en latest interacting html creating a new resource po
  • Python - 将整数或字符串发送到 Spark-Streaming

    我可以通过 CSV 文件发送我的数据 首先 将我的随机数写入CSV文件然后发送 但是可以直接发送吗 我的套接字代码 import socket host localhost port 8080 s socket socket socket
  • 生产中的静态文件出现 Django 301 和 403 禁止错误

    我正在尝试使用 nginx 和 Gunicorn 在 ubuntu 14 04 vps 上部署 django 网站 但是我的 css 文件和 js 文件没有加载 我在默认的 django 开发服务器上开发了它 它运行得很好 但是当我部署我的
  • 如何在 PyQt5 GUI 中快速绘制 matplotlib 实时绘图

    几年前 我已经尝试过嵌入现场matplotlib中的情节PyQt5图形用户界面 实时绘图显示从传感器捕获的实时数据流 某些过程 我已经成功了 您可以在此处阅读相关帖子 您自己的 GUI 中的 Matplotlib 动画 https stac
  • 如何在 Linux/Unix 上根据文件类型添加文件扩展名?

    这是一个关于 Unix shell 脚本 任何 shell 的问题 但任何其他 标准 脚本语言解决方案也将受到赞赏 我有一个充满文件的目录 其中文件名是这样的哈希值 fd73d0cf8ee68073dce270cf7e770b97 fec8
  • 与 Poetry 一起安装的软件包无法导入

    有一个简单但令人困惑的问题 当我尝试在模块中使用我用诗歌添加的包时 它无法导入 采取的步骤 poetry add sendgrid 在一个模块中 import sendgrid Error Import sendgrid could not
  • 如何将 int numpy 数组的列乘以浮点数字并保持 int 形式?

    我有一个 numpy 数组 gt gt gt b array 2 2 6 4 10 6 我想将第一列乘以浮点数 结果我需要 int 数字 因为当我这样做时 gt gt gt b 0 2 1 It says TypeError Cannot
  • 从图中删除节点或重置整个默认图

    使用默认全局图时 是否可以在添加节点后将其删除 或者将默认图重置为空 当我在 IPython 中交互地使用 TF 时 我发现自己必须反复重新启动内核 如果可能的话 我希望能够更轻松地尝试图表 更新 11 2 2016 tf reset de
  • 在 Django Admin 中隐藏 Auth 部分 [重复]

    这个问题在这里已经有答案了 在 Django 管理中 有什么方法可以隐藏 Auth 部分吗 假设这是 Django 和准系统项目的全新安装 没有应用程序 只有管理员 您可以使用admin site unregister from djang
  • 我在 Firestore 中执行了多少次读取?

    假设我有一个名为text messages在 firestore 中有 500 个文档 我知道其中一个文档的 doc id 我想执行以下代码来获取该文档的数据 doc db collection text messages document
  • 在Python 3中从网络下载文件

    我正在创建一个程序 通过读取同一游戏 应用程序的 jad 文件中指定的 URL 从 Web 服务器下载 jar java 文件 我正在使用Python 3 2 1 我已经设法从 JAD 文件中提取 JAR 文件的 URL 每个 JAD 文件

随机推荐

  • 如何在Python中进行二分法

    我想制作一个 Python 程序 它将运行二分法来确定以下各项的根 f x 26 85x 91x2 44x3 8x4 x5 二分法是一种用于估计多项式 f x 根的数值方法 是否有任何可用的伪代码 算法或库可以用来告诉我答案 基本技术 下面
  • 如何从 Firefox 扩展执行页面定义的 JavaScript 函数?

    我正在创建一个 Firefox 扩展用于演示目的 我从扩展调用文档中的特定 JavaScript 函数 我在 HTML 文档中写了这个 不是在扩展内 而是由 Firefox 加载的页面 document funcToBeCalled fun
  • 是否有解决未定义的引用/未解决的符号问题的通用准则?

    我在工作中遇到了几个 未定义的引用 在链接期间 和 未解析的符号 在 dlopen 之后的运行时期间 问题 这是一个相当大的 makefile 系统 是否有链接库和使用编译器标志 选项来避免这些类型的错误的通用规则和指南 如果您使用的是 M
  • iPhone项目中如何准确找到内存泄漏的地方

    在 Xcode 中开发应用程序时 会发生内存泄漏 当我在扩展详细视图中检查它们时 它们显示了与实现无关的不同方法 如何准确找出哪个对象正在泄漏以及哪里泄漏了内存 当启用 ARC 时 我们是否必须处理内存泄漏 即使ARC可能会发生内存泄漏 它
  • ProGuard 不会用依赖项混淆 JAR

    我有一个项目pom xml下面给出的文件 当我发出命令时mvn clean compile assembly single install我希望 Maven 生成一个 JAR 其中包含 所有依赖项和 我的代码的混淆版本 它不起作用 我的代码
  • 使用 PDO 和准备好的语句进行 MySQL 更新不起作用

    我在使用 php PDO 和 mysql 时遇到一个奇怪的问题 我有下表 create table test table id integer value text 单行 insert into test table values 1 as
  • 将创建的图像文件追加到 formdata 中

    我使用画布创建了图像 我想在表单数据中附加确切的图像文件而不是网址 这是我的代码
  • 在池中使用多个 Memcache 服务器

    我正在查看文档 对于指定多个服务器时 memcache 如何进行内部负载平衡有点困惑 例如 import memcache mc set servers 127 0 0 1 11211 127 0 0 1 11212 mc set some
  • 如何开始使用 Solr.NET

    嘿 我想知道如何开始使用 Solr NET 甚至是基础知识 要下载哪些文件等 我当然检查了网络 但就像每个网站都说不同的东西 有些网站比较旧 所以不确定 Cheers 看看这些问题 Solr 可用于 Net 吗 如何安装SOLRNET Se
  • Joda-Time 基于区域设置的日期时间格式

    我从另一个系统收到一个字符串日期 并且我知道该日期的区域设置 也可以从其他系统获得 我想把这个字符串转换成乔达时间 DateTime对象而不明确指定目标模式 例如 我想仅使用区域设置将此字符串 09 29 2014 转换为日期对象 而不是通
  • numpy 数组在 pyglet 中显示不正确

    我在使用 pyglet 显示 numpy 数组时遇到问题 我发现了一个非常相似的主题 如何使用 pyglet 显示 numpy 数组 我用过的 我想以灰度显示数组 但 pyglet 用颜色显示它 请参见图像 https i stack im
  • pycharm 不会对未使用的变量和导入发出警告

    突然我的 pycharm 停止警告未使用的变量或未使用的导入 将这些行着色为灰色 我在设置和检查中到处寻找 找不到问题所在 您可以通过以下方式再次启用它Settings gt Editor gt Inspections and in Pyt
  • cattr_accessor 位于 Rails 之外

    我正在尝试使用谷歌搜索ruby 库 代码如下 但它抱怨 cattr accessor是一个未定义的方法 有什么想法可能是这样或者我如何解决它 require rubygems require google search GoogleSear
  • SQL“LIKE”语法

    我正在编写一个需要在 mysql 和 postgresql 上运行的应用程序 我必须使用like比较一些值 在mysql中LIKE它不区分大小写 在 PostgreSQL 中LIKE它区分大小写并且ILIKE它不区分大小写 如果匹配必须不区
  • HTML 视频自动播放而不静音(或者 youtube 是如何做到的)?

    我知道许多较新的浏览器现在禁用autoplay当视频不存在时muted或将其静音然后播放 如果没有用户交互 也无法调用视频播放 这是可以理解的 但我想知道 youtube 如何仍然能够用声音开始视频 我查了一下 他们确实使用了视频标签 只是
  • Laravel redirect::route 在页面加载之间显示一条消息

    我目前正在使用 Laravel 开发一个网络应用程序 直到最近该应用程序都运行得很好 我不知道是什么触发了它 但这是我遇到的问题的摘要 登录过去可以正常工作 因为我有一个 AccountController 可以执行以下操作 auth Au
  • 实现安全 nullptr

    我想让我的代码在旧版 C 使用 NULL 的 C 代码 和新的 C 11 标准 使用 nullptr 的 C 代码 上都可编译 我正在使用 GCC 但计划在完成最重要的事情时也为 VS 重新编译整个代码库 我是否应该期望 GCC 和 VS
  • 为什么 Files.lines (和类似的 Streams)不会自动关闭?

    Stream 的 javadoc 指出 流有一个 BaseStream close 方法并实现 AutoCloseable 但几乎所有流实例在使用后实际上并不需要关闭 通常 只有源是 IO 通道的流 例如由 Files lines Path
  • 通过多个索引引用 PHP 数组

    这可能是某种奇怪的较长捷径 如果我的思路有误 请纠正我 我有一个数据矩阵 如下所示 unique id url other random data unique id url other random data unique id url
  • 查找数据框中每行的前 N ​​列

    给定一个包含一个描述性列和 X 个数字列的数据框 对于每一行 我想识别具有较高值的 前 N 列 并将其保存为新数据框上的行 例如 考虑以下数据框 df pd DataFrame df index A B C D E F df option1