文章目录

  • 示例数据展示
    • 例子筛选说明
  • 直接筛选
  • 基于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. Amber计算MM能量
  2. python所有模块图解_Python模块结构和布局
  3. MSP430常见问题之FLASH存储类
  4. Eclipse中CVS版本管理
  5. 计算机视觉面试常见问题(含解答)
  6. java重载方法math_Java语言程序设计(十二)Math数学类,方法重载及变量作用域...
  7. 使用BusyBox制作根文件系统的理论分析
  8. Spring基础环境搭建
  9. 苹果验证电子邮件地址服务器错误,苹果7P账户申请,验证电子邮件地址创建新Apple ID发生未知错误...
  10. 终于有人把平均数、中位数和众数讲明白了
  11. C#的多线程机制探索5
  12. upper_bound 和lower_bound彻底搞懂
  13. 人月神话阅读笔记06
  14. 《算法设计与分析基础》【part1】
  15. springboot使用xxl-job
  16. [xueqi]吃着榨菜,轻松搞下漏洞百出的湾湾站
  17. RabbitMq安装(Erlang前置安装)
  18. StretchSense 打造了一款真正舒适的手部动作捕捉手套
  19. PS制作圆角透明图片
  20. VM ware workstation 10 下载及安装密钥

热门文章

  1. 考研英语作文—遣词造句
  2. 面试了近60个公司,我听懂了这些“潜台词”
  3. AcWing一排奶牛
  4. 内存地址、位宽与容量
  5. Compile和Build的区别?
  6. 值得一读的品牌类好书
  7. 粗糙集matlab代码,matlab的粗糙集代码
  8. Excel怎么自定义表格样式,设置每两行替换颜色
  9. AWS中EBS相关概念
  10. 解决 白鹭引擎 egret 龙骨动画 Deprecated 已废弃