025—pandas 根多列判断不在其他列的数据

思路

是有两个相同结构的数据表,已知第二个表是第一个表的部分数据,需要以其中两列为单位,判断在第一个表中存在,在另外一个表中不存在的数据。

思路:

  • 我们先将 df1 和 df2 的 x、y 列取出,组合为元组形成,这样就先成为一个整体,形成了两个 Series,然后我们用
    Series 的 isin 方法来判断是否存在。
  • 得到是不否存在的布尔序列后,再应用到 df1,这里我们需要不存在的可以用 ~ 取反,具体可以看代码实现。

二、使用步骤

1.引入库

代码如下(示例):

import pandas as pd

2.读入数据

代码如下(示例):

# 数据1
df1 = pd.DataFrame({'x': ['a', 'b', 'c', 'd', 'e'],'y': [1, 2, 3, 2, 1],'z': ['how', 'are', 'you', 'fine', 'thanks']
})
df1

在这里插入图片描述

# 数据2
df2 = pd.DataFrame({'x': ['a', 'b', 'c'],'y': [1, 2, 3],'z': ['what', 'is', 'you']
})
df2
# 如以上数据,df1 中包含了 df2 的内容,现在需要以 x、y 列组合为整体,看 df1 中存在,在 df2 中不存在的数据。其中,z 列的内容认为信息过载的数据,我们不用关心。
# 很明显,df1 最后两行,不在 df2 中。

在这里插入图片描述

#根据以上思路,先将 x 和 y 列转为一个序列:
df1[['x','y']].apply(tuple, axis=1)

在这里插入图片描述

#再将 df2 的两列做以上操作后转为列表,方便使用 isin 检测操作:
df2[['x','y']].apply(tuple, axis=1).to_list()

在这里插入图片描述

#最后是整个判断检测结果:
slice_lable = (df1[['x','y']].apply(tuple, axis=1).isin(df2[['x','y']].apply(tuple, axis=1).to_list())
)slice_lable

在这里插入图片描述

# 最后,再应用到筛选操作上
# 在 df1 中存在,df2 中不存在的
df1[~slice_lable]

在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/529739.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享axios+signalr简单封装示例

Ajax Axios Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 从浏览器创建 XMLHttpReque…

C++容器适配器stack、queue、priority_queue

文章目录 C容器适配器stack、queue、priority_queue1、stack1.1、stack的介绍1.2、stack的使用1.3、stack的模拟实现 2、queue2.1、queue的介绍2.2、queue的使用2.3、queue的模拟实现 3、priority_queue3.1、priority_queue的介绍3.2、priority_queue的使用3.3、仿函数3.4、pri…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Navigation)

Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(NavDestination的子组件…

mybatisplus的条件构造器

条件构造器wrapper,主要用于构造sql语句的where条件,他更擅长这个,但也可以用于构造其他类型的条件,比如order by、group by等。 条件构造器的使用经验: 基于QueryWrapper的查询 练习1. void testQueryWrapper(){Q…

分库分表浅析原理

数据库存放数据大了,查询等操作就会存在瓶颈,怎么办? 1. 如果是单张表数据大了,可以在原有库上新建几张表table_0、table_1、table_2、.....table_n 写程序对数据进行分表: --这里提供一种一种分表策略,这里只需维护…

2024蓝桥杯每日一题(时间日期)

一、第一题:日期差值 解题思路:模拟 写一个计算时间的板子两者相减 【Python程序代码】 mon [0,31,28,31,30,31,30,31,31,30,31,30,31] def pd(x):if x%4000 or (x%40 and x%100!0):return Truereturn False def get_day(y,m,d):res 0for i …

【机器学习】无监督学习算法之:层次聚类

层次聚类 1、引言2、层次聚类2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝:鱼哥, 这周末过的滋润啊。 小鱼:… 每个周末都挺滋润的啊。 小屌丝:啊~ ~ 你这… 小鱼:周末加班&#xf…

C语言实现贪吃蛇

前言:今天给大家详细介绍一下小游戏贪吃蛇的代码。 目录 一 .贪吃蛇实现的功能 二.贪吃蛇游戏设计与分析 1.贪吃蛇以及贪吃蛇所需要维护的数据 (1)贪吃蛇蛇体 (2)数据维护 2.地图设计 (1&#x…

第16章——西瓜书强化学习

在强化学习中,智能体通过与环境的交互来学习如何做出决策。在每个时间步,智能体观察当前的环境状态,并根据其策略选择一个动作。环境会对智能体的动作做出响应,并给出一个奖励信号(reward),该信…

【DH法】——机器人运动学正逆解

描述关节姿态 串联机器人的关节由电机连杆组成,如下图所示: 图1 PUMA560机器人结构模型 图2 PUMA560机器人实物 PUMA 560 robot in the experiment. | Download Scientific Diagram (researchgate.net)

车载诊断协议DoIP系列 —— AL IPv6地址分配通用DoIP报头结构

车载诊断协议DoIP系列 —— AL IPv6地址分配&通用DoIP报头结构 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自…

题目:珠宝的最大交替和(蓝桥OJ 3791)

问题描述: 解题思路:(思路样例从0开始赋值) 注意点:1.S需要开long long 2.需要考虑如果交换的差值(即Aj - Ai)为负数的情况。 题解:(实例代码为从1开始赋值,因此奇偶要与…