匹配多列中的值的函数

2024-02-26

使用以下测试数据:

df2 = pd.DataFrame(np.random.randn(12, 3), columns=['A', 'B', 'C'])
thresh = .3
df2['matches'] = np.where(df2.A - df2.B < thresh,1,0)

我创建了df2['matches']显示值为1 when df2.A - df2.B < thresh.

        A           B            C      matches
0   0.501554    -0.589855   -0.751568   0
1   -0.295198   0.512442    0.466915    1
2   0.074863    0.343388    -1.700998   1
3   0.115432    -0.507847   -0.825545   0
4   1.013837    -0.007333   -0.292192   0
5   -0.930738   1.235501    -0.652071   1
6   -1.026615   1.389294    0.035041    1
7   0.969147    -0.397276   1.272235    0
8   0.120461    -0.634686   -1.123046   0
9   0.956896    -0.345948   -0.620748   0
10  -0.552476   1.376459    0.447807    1
11  0.882275    0.490049    0.713033    0

但是,我实际上想比较所有三列,以及值是否在范围内thresh它将返回一个与匹配数量相对应的数字df2['matches].

例如,如果 Col A = 1、B = 2 和 C = 1.5 并且 thresh 为 0.5,则函数将在 ['matches'] 列中返回 3。

是否有一个函数已经做了类似的事情或者任何人都可以帮助解决这个问题?


您可以使用每对列的阈值,然后对生成的布尔列进行求和以获得所需的数字。但请注意,该数字取决于比较列的顺序。如果你使用的话,这种歧义就会消失abs(df['A']-df['B'])等等,这很可能是您的意图。下面我假设这就是您所需要的。

一般来说,您可以使用itertools.combinations生成每对列一次:

from itertools import combinations
df = pd.DataFrame(np.random.randn(12, 3), columns=['A', 'B', 'C'])
thresh = .3
df['matches'] = sum(abs(df[k1]-df[k2])<thresh for k1,k2 in combinations(df.keys(),2))

中的生成器表达式sum()循环遍历每个列对,并构造相应的布尔向量。这些对每个列对进行求和,并将结果列附加到数据帧中。

示例输出thresh = 0.3:

           A         B         C  matches
0   0.146360 -0.099707  0.633632        1
1   1.462810 -0.186317 -1.411988        0
2   0.358827 -0.758619  0.038329        0
3   0.077122 -0.213856 -0.619768        1
4   0.215555  1.930888 -0.488517        0
5  -0.946557 -0.904743 -0.004738        1
6  -0.080209 -0.850830 -0.866865        1
7  -0.997710 -0.580679 -2.231168        0
8   1.762313 -0.356464 -1.813028        0
9   1.151338  0.347636 -1.323791        0
10  0.248432  1.265484  0.048484        1
11  0.559934 -0.401059  0.863616        0

Using itertools.combinations,各列比较为

>>> [k for k in itertools.combinations(df.keys(),2)]
('A', 'B'), ('A', 'C'), ('B', 'C')]

但如果您使用绝对值,这实际上并不重要(因为差异相对于列是对称的)。

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

匹配多列中的值的函数 的相关文章

  • 高效地将大型 Pandas 数据帧写入磁盘

    我正在尝试找到使用 Python Pandas 高效地将大型数据帧 250MB 写入磁盘或从磁盘写入的最佳方法 我已经尝试了所有方法Python 数据分析 但表现却非常令人失望 这是一个更大项目的一部分 该项目探索将我们当前的分析 数据管理
  • 在 Jupyter Notebook 中设置环境变量的不同方法

    在某些情况下 我在 Windows 10 计算机上使用 Jupyter 笔记本 我想通过设置环境变量 GOOGLE APPLICATION CREDENTIALS 来向 GCP 进行身份验证 我想知道 这两种设置环境变量的方式有什么区别 当
  • 如何使用 python、openCV 计算图像中的行数

    我想数纸张 所以我正在考虑使用线条检测 我尝试过一些方法 例如Canny HoughLines and FLD 但我只得到处理过的照片 我不知道如何计算 有一些小线段就是我们想要的线 我用过len lines or len contours
  • Python函数组成

    我尝试使用良好的语法来实现函数组合 这就是我所得到的 from functools import partial class compfunc partial def lshift self y f lambda args kwargs s
  • 如何将脚本作为 pytest 测试运行

    假设我有一个用简单脚本表示的测试assert 陈述 请参阅背景了解原因 例如 import foo assert foo 3 4 我如何以一种好的方式将该脚本包含在我的 pytest 测试套件中 我尝试了两种有效但不太好的方法 一种方法是将
  • 如何调试 numpy 掩码

    这个问题与this one https stackoverflow com q 73672739 11004423 我有一个正在尝试矢量化的函数 这是原来的函数 def aspect good angle float planet1 goo
  • 如果另一列中的值为空,则删除重复项 - Pandas

    我拥有的 df Name Vehicle Dave Car Mark Bike Steve Car Dave Steve 我想从 名称 列中删除重复项 但前提是 车辆 列中的相应值为空 我知道我可以使用 df dropduplicates
  • 从字典中绘制直方图

    我创建了一个dictionary计算 a 中出现的次数list每个键的内容 我现在想绘制其内容的直方图 这是我想要绘制的字典的内容 1 27 34 1 3 72 4 62 5 33 6 36 7 20 8 12 9 9 10 6 11 5
  • dask apply:AttributeError:“DataFrame”对象没有属性“name”

    我有一个参数数据框 并对每一行应用一个函数 该函数本质上是几个 sql queries 和对结果的简单计算 我正在尝试利用 Dask 的多处理 同时保持结构和界面 下面的例子有效并且确实有显着的提升 def get metrics row
  • 打印一份拥有多个家庭的人员名单,每个家庭都有多个电话号码

    我有一类 Person 它可以有多个 Home 每个 Home 都有一个或多个电话号码 我已经定义了类 但现在我正在尝试创建一个视图 其中列出每个人的所有家庭以及每个家庭地址的所有电话号码 类似于 john smith 123 fake s
  • 如何将 Pyspark Dataframe 标题设置到另一行?

    我有一个如下所示的数据框 col1 col2 col3 id name val 1 a01 X 2 a02 Y 我需要从中创建一个新的数据框 使用 row 1 作为新的列标题并忽略或删除 col1 col2 等行 新表应如下所示 id na
  • django 中的身份验证方法返回 None

    你好 我在 django 中做了一个简单的注册和登录页面 当想要登录时 登录视图中的身份验证方法不返回任何内容 我的身份验证应用程序 模型 py from django db import models from django contri
  • 错误:尝试使用 scrappy 登录时出现 raise ValueError("No element found in %s" % response)

    问题描述 我想从我大学的bbs上抓取一些信息 这是地址 http bbs byr cn http bbs byr cn下面是我的蜘蛛的代码 from lxml import etree import scrapy try from scra
  • 更新 matplotlib 中颜色条的范围

    我想更新一个contourf在函数内绘制 效果很好 然而 数据的范围发生了变化 因此我还必须更新颜色条 这就是我未能做到的地方 请参阅以下最小工作示例 import matplotlib pyplot as plt import numpy
  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • 使用 Sphinx 时,如何记录没有文档字符串的成员?

    我正在为我发布的包编写文档 我发现您的文档越全面 人们就越容易找到您的包来使用 废话 实际上 我在充满爱心地编写代码的所有功能和细节方面获得了很多乐趣 然而 我对如何为类级变量编写与 Sphinx 兼容的文档感到完全困惑 特别是 我有一些e
  • 如何使用logging.conf文件使用RotatingFileHandler将所有内容记录到文件中?

    我正在尝试使用RotatingHandler用于 Python 中的日志记录目的 我将备份文件保留为 500 个 这意味着我猜它将创建最多 500 个文件 并且我设置的大小是 2000 字节 不确定建议的大小限制是多少 如果我运行下面的代码
  • 为什么我的 PyGame 应用程序根本不运行?

    我有一个简单的 Pygame 程序 usr bin env python import pygame from pygame locals import pygame init win pygame display set mode 400

随机推荐

  • 处理 Powershell 函数中的管道和参数输入

    我对 在一个月的午餐中学习 PowerShell 一书中看到的内容感到困惑 在第 21 章中 当作者讨论通过参数绑定或管道接受输入的函数时 他给出了两种模式 第一个如下 function someworkerfunction do some
  • PHP 5.4:获取实例变量的完全限定类名

    我知道有静电classPHP 5 5 上的字段 但我必须坚持使用 PHP 5 4 是否可以从变量中获取完全限定的类名 Example namespace My Awesome Namespace class Foo 以及代码中的其他地方 p
  • 尽管我已在 Xcode 5 中添加,但应用程序图标未显示

    我已经添加了如下图所示的图标 但我仍然没有在我的设备或模拟器中看到该图标 这可能是 XCode 5 的错误 即添加的图标实际上并未包含在应用程序包中 但您可以通过转到 构建阶段 展开 复制包资源 然后按底部的 号手动添加来解决此问题图标文件
  • 嵌套哈希已定义?() [重复]

    这个问题在这里已经有答案了 确定是否最简洁的方法是什么 hash key1 key2 已定义 如果 hash or hash key1 为零 defined hash key1 key2 返回 True 如果 hash key1 存在 不判
  • eclipse中从方法定义跳转到方法调用【Java视角】

    日食中 我们有一个快捷键可以从调用方法的任何地方跳转到方法定义 即使用 F3 但是 如果我当前位于方法定义上并且我想要转到调用或使用该方法的位置 该怎么办 这有什么捷径吗 你可以试试Ctrl Shift G这相当于查找参考文献 or Ctr
  • 汇编代码不识别?和@数据

    这是我的第一个汇编程序 任何人都可以帮助使其成功运行 我看到下面的编译错误 为什么它不识别 and data 我正在尝试交换汇编中的两个变量 我正在执行以下命令 nasm f elf swap asm 但我收到这个错误 swap asm 6
  • WebLogic 10gR3 - 解析多部分/表单数据的 Content-Type 标头时出现 UnsupportedEncodingException

    我的应用程序在 WebLogic 10gR3 上通过 HTTP POST 接收多部分内容 每当客户指定charset属性beforeContent Type 标头上的其他属性 例如Content Type multipart form da
  • 乘以 keyup 上的输入值

    如何将一个输入的值乘以 2 并将其保存到另一个输入 那么当我输入 10 例如 时 第二个输入的值将是 20 Thanks 两个输入字段
  • 强制溢出到顶部而不是底部

    我希望我的内容溢出到 div 的顶部和左侧而不是右下角 目的是当展开 div 时 内容看起来像是从顶部而不是从底部进入 CSS 有什么办法可以做到这一点吗 很像你设置的方式vertical align对于文本 我想让 div 溢出到顶部而不
  • 将父容器的平移手势交给嵌套的 UICollectionView

    我正在尝试构建一个复杂的分割视图容器控制器 该控制器有利于两个可变高度容器 每个容器都有自己的嵌套视图控制器 父控制器上有一个全局平移手势 允许用户拖动视图容器中的任意位置 并在视图之间上下滑动 分隔线 它还具有一些智能位置阈值检测逻辑 可
  • 如何为 Cosmos 数据库中的每个文档设置字段?

    将每条记录的 PumperID 字段设置为默认值的 Cosmos 存储过程会是什么样子 我们需要这样做来修复一些数据 因此该过程将访问具有 PumperID 字段的每条记录 并非所有文档都有此字段 并将其设置为默认值 假设执行一次性数据维护
  • Biztalk Log4Net [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人在 Biztalk 中使用过 log4net 吗 我们目前正在考虑使用它 并试图了解它的优点 缺点 以及它是否能满足我们的需求 我已经将 L
  • Tomcat:限制 /just one/ webapp 对 localhost 的访问

    我正在运行 Tomcat 6 来为多个 Web 应用程序提供服务 其中大多数是面向公众的 但我想限制访问just onewebapp 仅允许来自本地主机的连接 我可以限制访问allwebapps 在 context xml 中使用 Valv
  • Java 7 独立应用程序中的依赖注入

    我想在大型 Java 7 独立应用程序中使用依赖注入 但我不太确定从哪里开始 我写了一个小测试应用程序 public class Main Inject MyInterface myInterface public static void
  • 如何验证PDF表单?

    我有一个用 Acrobat Professional 制作的可写 PDF 表单 我想验证数字条目是否在特定范围 a b 内 如果不是 我希望弹出一条警报 其中包含以下消息 请通过 XXX XXX XXXX 联系 Larry 以处理您的表单
  • Redis 连接因关闭事件而消失

    在我们的redis配置中 我们设置了超时 7秒 In 节点redis https github com mranney node redis我们将 Redis 连接就绪和结束事件处理为 client on ready function lo
  • CLion 无法从剪贴板粘贴正确的代码片段

    虽然在我的编程 职业生涯 中大部分时间都使用 Java 和 PHP 但我现在正在尝试更深入地学习 C 为此 我使用 CLion 作为我的 IDE 主要是因为我非常熟悉 phpStorm 和 IntelliJ IDEA 除了学习一门新语言之外
  • 有效识别字符串的一部分是否在列表/字典键中? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我的列表中有很多 gt 100 000 小写字符串 其中子集可能如下所示 str list hello i am fro
  • 将Drawable转换为BLOB数据类型sqlite问题

    在这里 我附加了将图像存储在 Drawable 中并以 BLOB 数据类型传递到数据库的代码 我尝试了这个 它可以正确存储但不显示图像 Insall app db i1 new Insall app db i1 createDatabse
  • 匹配多列中的值的函数

    使用以下测试数据 df2 pd DataFrame np random randn 12 3 columns A B C thresh 3 df2 matches np where df2 A df2 B lt thresh 1 0 我创建