您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:pandas is in和not in的使用说明

51自学网 2021-10-30 22:53:20
  python
这篇教程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 c0 True True False1 True True False2 True False False3 False False False4 False False False5 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   D0 -0.018330 2.093506 -0.086293 -2.1504791 0.104931 -0.271810 -0.054599 0.3616122 0.590216 0.218049 0.157213 0.6435403 -0.254449 -0.593278 -0.150455 -0.244485>>> df.A>0#布尔索引0 False1  True2  True3 FalseName: A, dtype: bool#布尔索引应用>>> df[df.A>0]   A   B   C   D1 0.104931 -0.271810 -0.054599 0.3616122 0.590216 0.218049 0.157213 0.643540>>>

isin()

添加一列E

>>> df['E']=['a','a','c','b']>>> df   A   B   C   D E0 -0.018330 2.093506 -0.086293 -2.150479 a1 0.104931 -0.271810 -0.054599 0.361612 a2 0.590216 0.218049 0.157213 0.643540 c3 -0.254449 -0.593278 -0.150455 -0.244485 b>>> df.E.isin(['a','c'])0  True1  True2  True3 FalseName: E, dtype: bool>>> df.isin(['b','c'])#整个df也同样适用  A  B  C  D  E0 False False False False False1 False False False False False2 False False False False True3 False False False False True#应用>>> df[df.E.isin(['a','c'])]   A   B   C   D E0 -0.018330 2.093506 -0.086293 -2.150479 a1 0.104931 -0.271810 -0.054599 0.361612 a2 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 E0 -0.01833 2.093506 -0.086293 0 a

也可以

不推荐,你试一下就知道

df.isin({'某列':[条件],'某列':[条件],})#应用>>> df.D=[0,1,0,2]>>> df   A   B   C D E0 -0.018330 2.093506 -0.086293 0 a1 0.104931 -0.271810 -0.054599 1 a2 0.590216 0.218049 0.157213 0 c3 -0.254449 -0.593278 -0.150455 2 b>>> df[df.isin({'D':[0,3],'E':['a','d']})] A B C D E0 NaN NaN NaN 0.0 a1 NaN NaN NaN NaN a2 NaN NaN NaN 0.0 NaN3 NaN NaN NaN NaN NaN#没错这不适合选出一行>>> df.isin({'D':[0,3],'E':['a','d']})  A  B  C  D  E0 False False False True True1 False False False False True2 False False False True False3 False False False False False

isin()的逆函数

告诉你没有isnotin,它的反函数就是在前面加上 ~ ,其他用法同上。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持51zixue.net。如有错误或未考虑完全的地方,望不吝赐教。


解决Python 进程池Pool中一些坑
pandas 查询函数query的用法说明
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。