文章目录

  • 示例数据展示
    • 例子筛选说明
  • 直接筛选
  • 基于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筛选符合多个条件的方法相关推荐

  1. pandas取出符合条件的某单元格的值

    pandas取出符合条件的某单元格的值 已经读取excel表中的值,得出DATAFRAME-----data1 想取出某些值写入另一个excel表 发现用data1['任务指标利润总额'][data1 ...

  2. Python筛选处理Excel的两种方法(openpyxl与pandas)

    Python处理Excel数据,有两种思路, 一是通过相应的execl库进行操作,优点是最大限度保留了excel的特性,缺点是速度慢 另一种是以数据的思维,通过Pandas等库进行数据处理,速度快,缺 ...

  3. 自动筛选符合条件的行数

    实现: 1.输入框:输入时,输入框背景灰色,边框黑色 2.姓名筛选:输入文字,自动筛选符合条件的行,并显示匹配的人数. js代码 $(document).ready(function () {$('# ...

  4. 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 ...

  5. Pandas——筛选数据(loc、iloc)

    文章目录 1.普通方法筛选 2.loc(纯标签筛选) 3. iloc(纯数字筛选) 4.ix(标签与数字的混合筛选) 5.判断条件筛选 1.普通方法筛选 我们首先构造了一个 5X4 的矩阵数据. im ...

  6. Python3 编写处理Excel表格数据筛选脚本用到的一些方法

    记录下之前用python3 写的一个处理Excel表格数据筛选脚本用到的一些方法. 本文内容比较杂,可按需跳转翻看. pandas是一个内容十分丰富的库,我也只不过用到其中处理excel的方法,对这个 ...

  7. pandas 筛选excel文件并保存新表

    文章目录 前言 代码 总结 前言 今天处理了一个大的excel文件,从中筛选符合条件的数据,excel工具只能筛选两个条件太局限了,就用pandas处理了一下,也是学到了很多东西,在这里记录一下,方便 ...

  8. Py之Pandas:Python的pandas库简介、安装、使用方法详细攻略

    Py之Pandas:Python的pandas库简介.安装.使用方法详细攻略 目录 pandas库简介 pandas库安装 pandas库使用方法 1.函数使用方法 2.使用经验总结 3.绘图相关操作 ...

  9. 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!

    来源:Python数据科学 作者:东哥起飞 本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel "条件格式"! 系列内容,请看????「pa ...

最新文章

  1. 乐山市2021年高考成绩查询,四川乐山2021年普通高考报名人数 实际高考参考人数...
  2. unlink与close关系
  3. ADF Faces。 立即的自定义客户端事件
  4. ubuntu 下 php 安装 zip
  5. 菱形继承和虚继承、对象模型和虚基表
  6. datax实现mysql数据同步
  7. 通过wifi上网,桥接模式下virtualBox虚拟机无法连上网的解决办法
  8. Wing IDE注册破解方法
  9. 简单的linux下docker的下载与安装
  10. 51单片机计算机加原理图,MCS-51单片机最小系统的组成部分及电路图介绍
  11. 海思HI3519V101 SDK详细编译过程
  12. 如何关掉visual studio 2012 实时调试器
  13. Android 修改保持WLAN热点开启的时间与最大连接数
  14. ilo管理脚本 hponcfg方式
  15. [学习笔记]什么是存储过程?
  16. 推荐几个优秀的echarts 图表网站,让你轻松搞定全部报表
  17. TM1650数码管驱动芯片驱动数码管读取按键程序
  18. MOOC清华《程序设计基础》第3章:谁是嫌疑犯(普通循环枚举)
  19. ospf协议基本概念
  20. Web 性能测试工具

热门文章

  1. MySQL 一个字段,用’,‘隔开,存储多个id,关联查询
  2. 【华为校园优招】华为苏研2日面试之旅
  3. MSP430使用库函数上手
  4. JZ·7.10.2019
  5. 大连民族大学计算机转专业,大连民族大学可以转专业吗,大连民族大学新生转专业政策...
  6. 测试工程师更换笔记本 - 软件安装(win10系统)
  7. 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
  8. 前端实习一个月的收获与思考
  9. 常见的端口及对其的攻击思路
  10. PYTHON学习路径计划图整理