pandas is in和not in的使用说明
作者:yyyyyyyyyyang 发布时间:2023-04-04 22:06:11
标签:pandas,is,in,not,in
简介
pandas按条件筛选数据时,除了使用query()方法,还可以使用isin和对isin取反进行条件筛选.
代码
import pandas as pd
df = pd.DataFrame({'a':[1, 2, 3, 4, 5, 6],
'b':[1, 2, 3, 4, 5, 6],
'c':[1, 2, 3, 4, 5, 6]})
filter_condition = {'a':[1, 2, 3]}
df_in = df[df.isin(filter_condition)['a']]
df_notin = df[~df.isin(filter_condition)['a']]
df.isin(filter_condition)
a b c
0 True True False
1 True True False
2 True False False
3 False False False
4 False False False
5 False False False
使用总结
pandas使用isin时,返回DataFrame中存储的数据为是否满足筛选条件的boolean,可以通过boolean对DataFrame对数据进行筛选。
补充:pandas中isin()函数及其逆函数使用
我使用这个函数就是用来清洗数据,删选过滤掉DataFrame中一些行。
布尔索引
这里你需要知道DateFrame中布尔索引这个东西,可以用满足布尔条件的列值来过滤数据,如下
>>> df=pd.DataFrame(np.random.randn(4,4),columns=['A','B','C','D'])
>>> df
A B C D
0 -0.018330 2.093506 -0.086293 -2.150479
1 0.104931 -0.271810 -0.054599 0.361612
2 0.590216 0.218049 0.157213 0.643540
3 -0.254449 -0.593278 -0.150455 -0.244485
>>> df.A>0#布尔索引
0 False
1 True
2 True
3 False
Name: A, dtype: bool
#布尔索引应用
>>> df[df.A>0]
A B C D
1 0.104931 -0.271810 -0.054599 0.361612
2 0.590216 0.218049 0.157213 0.643540
>>>
isin()
添加一列E
>>> df['E']=['a','a','c','b']
>>> df
A B C D E
0 -0.018330 2.093506 -0.086293 -2.150479 a
1 0.104931 -0.271810 -0.054599 0.361612 a
2 0.590216 0.218049 0.157213 0.643540 c
3 -0.254449 -0.593278 -0.150455 -0.244485 b
>>> df.E.isin(['a','c'])
0 True
1 True
2 True
3 False
Name: E, dtype: bool
>>> df.isin(['b','c'])#整个df也同样适用
A B C D E
0 False False False False False
1 False False False False False
2 False False False False True
3 False False False False True
#应用
>>> df[df.E.isin(['a','c'])]
A B C D E
0 -0.018330 2.093506 -0.086293 -2.150479 a
1 0.104931 -0.271810 -0.054599 0.361612 a
2 0.590216 0.218049 0.157213 0.643540 c
>>>
isin()接受一个列表,判断该列中元素是否在列表中。
同时对多个列过滤,可以如下使用
df[df[某列].isin(条件)&df[某列].isin(条件)]
#应用
>>> df.D=[0,1,0,2]
>>> df[df.E.isin(['a','d'])&df.D.isin([0,])]
A B C D E
0 -0.01833 2.093506 -0.086293 0 a
也可以
不推荐,你试一下就知道
df.isin({
'某列':[条件],
'某列':[条件],
})
#应用
>>> df.D=[0,1,0,2]
>>> df
A B C D E
0 -0.018330 2.093506 -0.086293 0 a
1 0.104931 -0.271810 -0.054599 1 a
2 0.590216 0.218049 0.157213 0 c
3 -0.254449 -0.593278 -0.150455 2 b
>>> df[df.isin({'D':[0,3],'E':['a','d']})]
A B C D E
0 NaN NaN NaN 0.0 a
1 NaN NaN NaN NaN a
2 NaN NaN NaN 0.0 NaN
3 NaN NaN NaN NaN NaN
#没错这不适合选出一行
>>> df.isin({'D':[0,3],'E':['a','d']})
A B C D E
0 False False False True True
1 False False False False True
2 False False False True False
3 False False False False False
isin()的逆函数
告诉你没有isnotin,它的反函数就是在前面加上 ~ ,其他用法同上。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/weixin_42764612/article/details/89600903


猜你喜欢
- login <?php require "../include/DBClass.php"; $usern
- 公司客户在使用网站后台编辑添加修改内容时,经常是直接从word文档里复制内容到编辑器里后就提交。结果是在内容显示页面上是五花八门的样式,有时
- 本文实例讲述了PHP封装cURL工具类。分享给大家供大家参考,具体如下:CurlUtils工具类:<?php/** * cURL请求工
- 利用python进行求解,求解的要求是不能使用python内部封装好的函数例如:maxway1:def findmax(data,n): i
- 今天在部署一个实验系统的时候,报出下面这个错: Your 'max_allowed_packet' variable is
- 写给新手的话pycharm是什么,为什么让我指定interpreter记事本最开始写C语言代码的时候,人们使用vi,记事本等软件写代码,写完
- 一、文件操作1、文件的概念1.文件就是计算机暴露给用户操作硬盘的快捷方式2.计算机的文件,就是用来储存某种信息的数据3.在计算机中,文件是以
- JS调试技巧技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟ch
- 通过 CSS transform (firefox文档, safari文档)属性. 无所不能的css也开始玩起3D效果了。在配合 CSS t
- 前言前面我们讲过了error类型来处理一般的错误,本文会描述使用panic函数和recover函数来处理比较极端的错误。简单来说,当程序运行
- 因为最近的任务有用到目标检测,所以昨天晚上、今天上午搞了一下,快速地了解了目标检测这一任务,并且实现了使用opencv进行目标检测。网上资料
- 前言今天来聊一下PyTorch中的torch.nn.Parameter()这个函数,笔者第一次见的时候也是大概能理解函数的用途,但是具体实现
- 首先要扩展自带的auth_user表我就放个图吧,同时setting中应该设置:# 此处重载是为了使UserProfile生效AUTH_US
- 概述Binlog2sql是一个Python开发开源的MySQL Binlog解析工具,能够将Binlog解析为原始的SQL,也支持将Binl
- 1.使用jobsName.ini文件保存要创建job的名字jobs1jobs2jobs32.使用Jenkins创建job时自动生成的conf
- 什么是1433端口 1433端口,是SQL Server默认的端口,SQL Server服务使用两个端口:TCP-1433、UDP-1434
- 简单用py写了一个贪吃蛇游戏,有单人、双人模式,比较简单,适合初学者练手。本上每行重要的语句都有注释,做了什么事一目了然这里介绍双人模式单人
- MySQL用户和权限在MySQL中有一个系统自身就带有的数据库叫MySQL,数据库装好以后系统自带了好几个数据库MySQL就是其中过一个,M
- 一、config.ini 配置文件[DATABASE]host = 192.1.1.1username = rootpassword = r
- 本文阐述了网页设计中的十大诀窍,作为网页开发者我们应该注意,这样才能最大限度得发挥网站的功能和效益: 预早筹划设计主页未必很艰难。