pandas筛选符合多个条件的方法
文章目录
- 示例数据展示
- 例子筛选说明
- 直接筛选
- 基于map的筛选
- 使用query()方法筛选
- 总结:
- 参考资料
我的这篇笔记不记录排序、分组、替换,只记录筛选功能的三种常见的方法。
- 直接筛选(推荐)
- 基于map方法的筛选(在方法一的基础上,十分推荐)
- query方法(不推荐)
所有代码均在:https://github.com/123liudong/pythonBlog/tree/master/dataDealPandas
示例数据展示
all_data = pd.read_csv('data.csv')
print(all_data.info())
print(all_data.head(100))
例子筛选说明
为了简单例子,所以在使用筛选方法1和方法2的时候,直接筛选User_id=1439408和Date=NaN的数据。至于筛选方法3,因为我还不知道怎么表示NaN所以仅展示筛选User_id=1439408的数据。
直接筛选
- 直接使用列需要满足的条件,如果需要多个列同时满足条件,使用’&‘符号连接即可;如果只需要某一列满足条件,则使用’|'连接多个列的条件。
# # 直接筛选方法
some = all_data[(all_data['User_id'] == 1439408) & (all_data['Date'].isna())]
print(some)
结果:得到了User_id=1439408和Date为空的数据项
User_id Merchant_id Coupon_id Discount_rate Distance Date_received Date
1 1439408 4663 11002.0 150:20 1.0 20160528.0 NaN
2 1439408 2632 8591.0 20:1 0.0 20160217.0 NaN
3 1439408 2632 1078.0 20:1 0.0 20160319.0 NaN
4 1439408 2632 8591.0 20:1 0.0 20160613.0 NaN
基于map的筛选
- 这个筛选方式和直接筛选唯一不同的就是,把筛选条件给隔离出来了。
user_requried = all_data['User_id'].map(lambda x : x==1439408)
date_requried = all_data['Date'].map(lambda x : np.isnan(x))
some = all_data[user_requried & date_requried]
print(some)
结果:其中map返回的值必须是bool类型,即某一个条件。然后使用直接筛选的方式,把条件合并,最终得出筛选的结果。我认为使用此种类型的方法更加的优美。
User_id Merchant_id Coupon_id Discount_rate Distance Date_received Date
1 1439408 4663 11002.0 150:20 1.0 20160528.0 NaN
2 1439408 2632 8591.0 20:1 0.0 20160217.0 NaN
3 1439408 2632 1078.0 20:1 0.0 20160319.0 NaN
4 1439408 2632 8591.0 20:1 0.0 20160613.0 NaN
使用query()方法筛选
- 直接写表达式,得出想要筛选的结果。
some = all_data.query('(User_id == 1439408)')
print(some)
结果:直接写表达式容易触发一些不必要的问题(值的类型容易出错,一些特殊值的表达困难等),所以并不建议使用这样的方法。
User_id Merchant_id Coupon_id ... Distance Date_received Date
0 1439408 2632 NaN ... 0.0 NaN 20160217.0
1 1439408 4663 11002.0 ... 1.0 20160528.0 NaN
2 1439408 2632 8591.0 ... 0.0 20160217.0 NaN
3 1439408 2632 1078.0 ... 0.0 20160319.0 NaN
4 1439408 2632 8591.0 ... 0.0 20160613.0 NaN
5 1439408 2632 NaN ... 0.0 NaN 20160516.0
6 1439408 2632 8591.0 ... 0.0 20160516.0 20160613.0
总结:
- 直接筛选适用于一些较简单的筛选
- 基于map的方法适用于较为复杂的筛选,把条件提出来实现,使得代码更加简单明了。
- 使用query方法虽然也能实现,但写的表达式总是容易出错,所以不建议使用。
参考资料
- https://pandas.pydata.org/pandas-docs/stable/
pandas筛选符合多个条件的方法相关推荐
- pandas取出符合条件的某单元格的值
pandas取出符合条件的某单元格的值 已经读取excel表中的值,得出DATAFRAME-----data1 想取出某些值写入另一个excel表 发现用data1['任务指标利润总额'][data1 ...
- Python筛选处理Excel的两种方法(openpyxl与pandas)
Python处理Excel数据,有两种思路, 一是通过相应的execl库进行操作,优点是最大限度保留了excel的特性,缺点是速度慢 另一种是以数据的思维,通过Pandas等库进行数据处理,速度快,缺 ...
- 自动筛选符合条件的行数
实现: 1.输入框:输入时,输入框背景灰色,边框黑色 2.姓名筛选:输入文字,自动筛选符合条件的行,并显示匹配的人数. js代码 $(document).ready(function () {$('# ...
- python筛选csv数据_pandas数据筛选和csv操作的实现方法
1. 数据筛选 a b c 0 0 2 4 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28 5 30 32 34 6 36 38 40 7 42 44 46 8 4 ...
- Pandas——筛选数据(loc、iloc)
文章目录 1.普通方法筛选 2.loc(纯标签筛选) 3. iloc(纯数字筛选) 4.ix(标签与数字的混合筛选) 5.判断条件筛选 1.普通方法筛选 我们首先构造了一个 5X4 的矩阵数据. im ...
- Python3 编写处理Excel表格数据筛选脚本用到的一些方法
记录下之前用python3 写的一个处理Excel表格数据筛选脚本用到的一些方法. 本文内容比较杂,可按需跳转翻看. pandas是一个内容十分丰富的库,我也只不过用到其中处理excel的方法,对这个 ...
- pandas 筛选excel文件并保存新表
文章目录 前言 代码 总结 前言 今天处理了一个大的excel文件,从中筛选符合条件的数据,excel工具只能筛选两个条件太局限了,就用pandas处理了一下,也是学到了很多东西,在这里记录一下,方便 ...
- Py之Pandas:Python的pandas库简介、安装、使用方法详细攻略
Py之Pandas:Python的pandas库简介.安装.使用方法详细攻略 目录 pandas库简介 pandas库安装 pandas库使用方法 1.函数使用方法 2.使用经验总结 3.绘图相关操作 ...
- 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!
来源:Python数据科学 作者:东哥起飞 本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel "条件格式"! 系列内容,请看????「pa ...
最新文章
- Amber计算MM能量
- python所有模块图解_Python模块结构和布局
- MSP430常见问题之FLASH存储类
- Eclipse中CVS版本管理
- 计算机视觉面试常见问题(含解答)
- java重载方法math_Java语言程序设计(十二)Math数学类,方法重载及变量作用域...
- 使用BusyBox制作根文件系统的理论分析
- Spring基础环境搭建
- 苹果验证电子邮件地址服务器错误,苹果7P账户申请,验证电子邮件地址创建新Apple ID发生未知错误...
- 终于有人把平均数、中位数和众数讲明白了
- C#的多线程机制探索5
- upper_bound 和lower_bound彻底搞懂
- 人月神话阅读笔记06
- 《算法设计与分析基础》【part1】
- springboot使用xxl-job
- [xueqi]吃着榨菜,轻松搞下漏洞百出的湾湾站
- RabbitMq安装(Erlang前置安装)
- StretchSense 打造了一款真正舒适的手部动作捕捉手套
- PS制作圆角透明图片
- VM ware workstation 10 下载及安装密钥