Pandas:根据其他行删除行

2023-11-26

我有一个 pandas 数据框,如下所示:

qseqid  sseqid  qstart    qend
2         1     125       345
4         1     150       320
3         2     150       450
6         2     25        300
8         2     50        500

我想根据以下条件删除基于其他行值的行:如果存在具有相同条件的另一行 (r2),则必须删除行 (r1)sseqid and r1[qstart] > r2[qstart] and r1[qend] < r2[qend].

这对熊猫来说可能吗?


df  = pd.DataFrame({'qend': [345, 320, 450, 300, 500],
 'qseqid': [2, 4, 3, 6, 8],
 'qstart': [125, 150, 150, 25, 50],
 'sseqid': [1, 1, 2, 2, 2]})

def remove_rows(df):
    merged = pd.merge(df.reset_index(), df, on='sseqid')
    mask = ((merged['qstart_x'] > merged['qstart_y']) 
            & (merged['qend_x'] < merged['qend_y']))
    df_mask = ~df.index.isin(merged.loc[mask, 'index'].values)
    result = df.loc[df_mask]
    return result

result = remove_rows(df)
print(result)

yields

   qend  qseqid  qstart  sseqid
0   345       2     125       1
3   300       6      25       2
4   500       8      50       2

这个想法是使用pd.merge用每对行形成一个 DataFrame 与相同的sseqid:

In [78]: pd.merge(df.reset_index(), df, on='sseqid')
Out[78]: 
    index  qend_x  qseqid_x  qstart_x  sseqid  qend_y  qseqid_y  qstart_y
0       0     345         2       125       1     345         2       125
1       0     345         2       125       1     320         4       150
2       1     320         4       150       1     345         2       125
3       1     320         4       150       1     320         4       150
4       2     450         3       150       2     450         3       150
5       2     450         3       150       2     300         6        25
6       2     450         3       150       2     500         8        50
7       3     300         6        25       2     450         3       150
8       3     300         6        25       2     300         6        25
9       3     300         6        25       2     500         8        50
10      4     500         8        50       2     450         3       150
11      4     500         8        50       2     300         6        25
12      4     500         8        50       2     500         8        50

merged 的​​每一行包含 df 的两行数据。然后您可以使用比较每两行

mask = ((merged['qstart_x'] > merged['qstart_y']) 
        & (merged['qend_x'] < merged['qend_y']))

并找到标签df.index不符合此条件的:

df_mask = ~df.index.isin(merged.loc[mask, 'index'].values)

并选择这些行:

result = df.loc[df_mask]

请注意,这假设df有唯一索引。

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

Pandas:根据其他行删除行 的相关文章

  • 重新索引错误没有意义

    I have DataFrames大小在 100k 到 2m 之间 我正在处理这个问题的框架是如此之大 但请注意 我必须对其他框架执行相同的操作 gt gt gt len data 357451 现在这个文件是通过编译许多文件创建的 所以它
  • 如何使用 lxml 解析包含前缀但没有名称空间声明的 XML?

    我有一堆使用前缀但没有相应名称空间声明的 XML 文件 像这样的东西
  • 蜘蛛内的Scrapyd jobid值

    Scrapy 框架 Scrapyd 服务器 我在获取蜘蛛内部的 jobid 值时遇到一些问题 将数据发布到后http localhost 6800 schedule json http localhost 6800 schedule jso
  • 在 Python 中绘制分类数据的三个维度

    我的数据包含三个我试图可视化的分类变量 城市 五个之一 职业 四种之一 血型 四种之一 到目前为止 我已经成功地以一种我认为易于使用的方式对数据进行了分组 import numpy as np pandas as pd Make data
  • OpenCV - 我需要将彩色图像插入黑白图像并且

    我用以下代码将黑白图像插入彩色图像 没问题 face grey cv cvtColor face cv COLOR RGB2GRAY for row in range 0 face grey shape 0 for column in ra
  • 在 vim 折叠线中语法高亮 Python

    我发现代码折叠 http en wikipedia org wiki Code folding帮助我更好地组织我的文件 因此 在我的底部 vimrc 我启用vim代码折叠 http vimdoc sourceforge net htmldo
  • 从主机名中提取域名

    是否有一种编程方式可以从给定的主机名查找域名 给出 gt www yahoo co jp 返回 gt yahoo co jp 有效但非常慢的方法是 拆分为 并从左侧删除 1 个组 使用 dnspython 加入并查询 SOA 记录 当返回有
  • Python,多线程,获取网页,下载网页

    我想在一个站点批量下载网页 我的 urls txt 文件中有 5000000 个 url 链接 大约有300M 如何让多线程链接这些网址并下载这些网页 或者如何批量下载这些网页 我的想法 with open urls txt r as f
  • 使 np.loadtxt 使用多个可能的分隔符

    我有一个程序可以读取数据文件 用户可以选择他们想要使用的列 我希望它对于输入文件更加通用 有时 列可能如下所示 10 34 24 58 8 284 6 121 有时它们可 能看起来像这样 10 34 24 58 8 284 6 121 我希
  • 如何绘制多类分类器的精度和召回率?

    我正在使用 scikit learn 我想绘制精度和召回曲线 我正在使用的分类器是RandomForestClassifier scikit learn 文档中的所有资源都使用二元分类 另外 我可以绘制多类的 ROC 曲线吗 另外 我只找到
  • 如何在数据框中绘制包含三列的无向图,形成 3 种不同类型的节点(三方)?

    我正在尝试使用三个不同的列表绘制网络的可视化 这三个列表形成 3 种类型的节点 下面的代码正在运行 如图所示 需要两个列表 用户 ID 评分 但是 我希望我的图表是三部分的 即 user userId review ratings prod
  • PyCharm - 如何挂起所有线程

    我们使用 PyCharm 5 0 1 进行多线程调试 当它在断点处停止时 只有特定线程停止 而所有其他线程继续 这使得 冻结时刻 和检查参数值以及其他线程的当前状态变得困难 当其中一个线程在断点处停止时 是否可以挂起所有线程 这在最新的 P
  • 如何测试列表中多个值的成员资格

    我想测试两个或多个值是否在列表中具有成员资格 但我得到了意外的结果 gt gt gt a b in b a foo bar a True 那么 Python 可以同时测试列表中多个值的成员资格吗 这个结果意味着什么 See also How
  • 在python中安装scipy模块时出错

    我正在尝试使用 pip 在 python 中安装 scipy 模块 它显示以下错误 Command c users sony appdata local programs python python35 32 python exe u c
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • 使用 statsmodels.formula.api 中的 ols - 如何删除常数项?

    我正在遵循第一个例子statsmodels教程 http statsmodels sourceforge net devel http statsmodels sourceforge net devel 如何指定在 ols 中不使用常数项进
  • Python 中的十进制到二进制半精度 IEEE 754

    我只能使用以下命令将十进制转换为二进制单精度 IEEE754struct pack模块 或者使用相反的方法 float16 或 float32 numpy frombuffer 是否可以使用 Numpy 将十进制转换为二进制半精度浮点数 我
  • Python 队列 get()/task_done() 问题

    我的消费者端队列 m queue get queue task done
  • 如何保持 python 3 脚本 (Bot) 运行

    不是母语英语 抱歉 英语可能很蹩脚 我也是编程新手 您好 我正在尝试使用 QueryServer 连接到 TeamSpeak 服务器来创建机器人 经过几天的努力 它有效 只有 1 个问题 而我却被这个问题困扰了 如果您需要检查 这是我正在使
  • 部署 Flask 应用程序时如何检测额外文件的更改并重新加载应用程序? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我在 Flask 中构建了一个小型 Web 应用程序 并尝试将其部署在 Pythonanywhere 上 在开发过程中

随机推荐

  • 实现 47 度 android-swipelistview 用于滑动 android ListViewItem

    实际上我的目标是在android中实现ListViewItem Swipe 我已经尝试过了 stackoverflow 有几个可以让你的 ListViewSwipe 的例子 例子 简单的滑动手势活动教程 从列表视图中滑动一项时在列表视图中显
  • 将程序加载到 RAM 并执行它们 NASM 16b

    我迫切需要解决这个问题 我正在尝试开发汇编代码 允许我加载和执行 通过用户的输入 2 个其他 Assembly EXE 程序 我有两个问题 我似乎无法将路径名分配给有效的寄存器 或者可能是错误的语法 我需要能够在第一个程序 可能是 开始执行
  • Python 对象删除自身

    为什么这不起作用 我正在尝试使类的实例删除自身 gt gt gt class A def kill self del self gt gt gt a A gt gt gt a kill gt gt gt a lt main A instan
  • SPA 中刷新令牌 Cookie 的 CSRF 保护

    我在 AngularJS SPA 中使用资源所有者密码凭据 OAuth 2 0 流程 有几篇文章 here here 以及答案这个问题这说明我们不应该将刷新令牌存储在 Web 客户端 LocalStorage 上 而是将它们加密存储在 Ht
  • 使用 android.telecom 和 InCallService 接听来电

    自 API 21 以来 Google 一直在添加功能android 电信总体而言 特别是通过实施更多成员电信经理并添加通话服务 最后一个应该允许非系统 第三方应用程序提供和替换系统呼叫应用程序通话中屏幕的功能 弹出并允许执行操作的窗口EXT
  • Asm代码解释

    以下 GCC 内联汇编取自 LuaJit 的 coco 库 有人可以逐行解释它的作用吗 static inline void coco switch coco ctx from coco ctx to asm volatile movl 1
  • tesseract 安装 mac 操作系统

    我正在尝试使用 homeBrew 在我的 mac 上安装 tesseract 当我尝试安装时 一切似乎都很好 但我收到以下错误 消息 Warning Could not link leptonica Unlinking Error The
  • shell脚本测试

    我正在尝试更新其他人编写的 bash 脚本 但遇到了一行我不确定的内容 谁能告诉我以下检查的作用 if RESULT 0 0 我假设它正在检查 RESULT 中的某些值 可能带有子字符串 任何帮助表示赞赏 命令 只是命令的别名test 右方
  • CORS 适用于对 API 的直接请求,但不适用于静态文件(如 css)

    我们正在开发一个由 Android 组成的项目Mobile App连同一个Web API Web API 是 Asp net MVC Core 我已经启用了CORS服务于我的Startup cs 因此移动应用程序 API 调用可以跨源访问
  • 迭代 std::deque 时擦除元素时出现分段错误

    为什么下面的代码会崩溃 当我通过反向迭代器进行迭代时应该做什么 那么如何删除单个元素呢 deque q q push back 4 q push back 41 q push back 14 for auto it q begin it q
  • pandas - 两列的直方图?

    我有这个数据 data pd DataFrame from dict r for r in response print data id total 0 213 1 1 194 3 2 205 156 现在 如果我打电话 data hist
  • 带有闪亮工具提示BS的反应式单选按钮

    我想创建一个radioButtons带有工具提示的小部件使用shinyBS 我想要实现的是创建一个带有 3 个按钮的小部件 其中包含不同的信息tooltip 基于此solution它创建了 3 个具有不同 id 值的独立单选按钮 是否可以做
  • intptr_t 是 uintptr_t 的有符号对应项(反之亦然)吗?

    我正在为 add signed MPL 类开发一些测试 将类型转换为其签名的对应项 它的定义如下 template
  • 在python中将url保存为文件名

    我有一个网址 例如 http example com here there index html 现在我想将文件及其内容保存在目录中 我希望文件名是 http example com here there index html 但我收到错误
  • 检测字符串是否为数字的最优雅的方法?

    有没有比这更好 更优雅 和 或可能更快 的方法 boolean isNumber false try Double valueOf myNumber isNumber true catch NumberFormatException e E
  • 是否可以将类内类的实例设置为 null

    是否可以将类内类的实例设置为 null 例如 我可以做这样的事情吗 int main Create a new test object Test test new Test Delete that object This method sh
  • Grit的clone方法未定义?

    我最近开始从事一个使用 git 进行存储并使用 ruby 作为前端的项目 我的脚本的第一个版本使用 ruby git 虽然非常简单 但还可以 当我需要对我的提交和日志进行更具体的工作时 建议我转向坚毅 然而 我在早期遇到了一个障碍 grit
  • 如何在wkwebview中下载文件

    有人请告诉我如何在 iOS wkwebview 中下载文件 我创建了一个 iOS 网络视图应用程序 在我加载的页面中 它有几个下载选项 但是当我单击下载时没有任何反应 注意 我不想创建额外的下载按钮 Since macOS 11 3 and
  • PHP json_encode 数组 0 键的问题

    我在使用 json encode 从数组生成 json 编码字符串时遇到问题 有问题的数组部分如下所示 RatingDistribution Array 11 elements 0 Array 1 element 0 String 3 ch
  • Pandas:根据其他行删除行

    我有一个 pandas 数据框 如下所示 qseqid sseqid qstart qend 2 1 125 345 4 1 150 320 3 2 150 450 6 2 25 300 8 2 50 500 我想根据以下条件删除基于其他行