在pandas中怎么样实现类似mysql查找语句的功能:

select * from table where column_name = some_value;

pandas中获取数据的有以下几种方法:

  • 布尔索引
  • 位置索引
  • 标签索引
  • 使用API

假设数据如下:

import pandas as pd
import numpy as np df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2})

布尔索引

该方法其实就是找出每一行中符合条件的真值(true value),如找出列A中所有值等于foo

df[df['A'] == 'foo'] # 判断等式是否成立

位置索引

使用iloc方法,根据索引的位置来查找数据的。这个例子需要先找出符合条件的行所在位置

mask = df['A'] == 'foo'
pos = np.flatnonzero(mask) # 返回的是array([0, 2, 4, 6, 7])
df.iloc[pos] #常见的iloc用法
df.iloc[:3,1:3]

标签索引

如何DataFrame的行列都是有标签的,那么使用loc方法就非常合适了。

df.set_index('A', append=True, drop=False).xs('foo', level=1) # xs方法适用于多重索引DataFrame的数据筛选

# 更直观点的做法
df.index=df['A'] # 将A列作为DataFrame的行索引
df.loc['foo', :] # 使用布尔
df.loc[df['A']=='foo']

使用API

pd.DataFrame.query方法在数据量大的时候,效率比常规的方法更高效。

df.query('A=="foo"')

# 多条件
df.query('A=="foo" | A=="bar"')

数据提取不止前面提到的情况,第一个答案就给出了以下几种常见情况:

1、筛选出列值等于标量的行,用==

df.loc[df['column_name'] == some_value]

2、筛选出列值属于某个范围内的行,用isin

df.loc[df['column_name'].isin(some_values)]  # some_values是可迭代对象

3、多种条件限制时使用&,&的优先级高于>=或<=,所以要注意括号的使用

df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]

4、筛选出列值不等于某个/些值的行

df.loc[df['column_name'] != 'some_value']

df.loc[~df['column_name'].isin('some_values')] #~取反

如果你觉得我的文章还可以,可以关注我的微信公众号,查看更多实战文章:Python爬虫实战之路

也可以扫描下面二维码,添加我的微信公众号

使用pandas筛选出指定列值所对应的行的更多相关文章

  1. 【452】pandas筛选出表中满足另一个表所有条件的数据

    参考:pandas筛选出表中满足另一个表所有条件的数据 参考:pandas:匹配两个dataframe 使用 pd.merge 来实现 on 表示查询的 columns,如果都有 id,那么这是很好的 ...

  2. jquery实现对象数组 筛选出每条记录中的特定属性字段 及根据某个属性值筛选出指定的元素

    jquery实现对象数组 筛选出每条记录中的特定属性字段 直接上图: 源码: /** * 对后端返回的数据,筛选出符合报表的列项,多余的列项去除 */ function filterParams(da ...

  3. 如何从两个List中筛选出相同的值

    问题 现有社保卡和身份证若干,想要匹配筛选出一一对应的社保卡和身份证. 转换为List socialList,和List idList,从二者中找出匹配的社保卡. 模型 创建社保卡类 /** * @a ...

  4. Pandas 删除指定列中为NaN的行

    定位要删除的行 需求:删除指定列中NaN所在行. 如下图,’open‘ 列中有一行为NaN,定位到它,然后删除. 定位: df[np.isnan(df['open'])].index # 这样即可定位 ...

  5. pandas 如何判断指定列是否(全部)为NaN(空值)

    判断某列是否有NaN df['$open'].isnull().any() # 判断open这一列列是否有 NaN 判断某列是否全部为NaN df['$open'].isnull().all() # ...

  6. pandas 筛选某一列最大值最小值 sort_values、groupby、max、min

    高效方法: dfs[dfs['delta'].isnull()==False].sort_values(by='delta', ascending=True).groupby('Call_Number ...

  7. ext js 4.0 grid表格根据列值的不同给行设置不同的背景颜色

    Code: Ext.create('Ext.grid.Panel', { ... viewConfig: { getRowClass: function(record) { return record ...

  8. pandas神坑:如果列有NAN,则默认给数据转换为float类型!给pandas列指定不同的数据类型。

    今天碰到一个错误,一个字典取值报keyError, 一查看key, 字符串类型的数字后面多了小数点0, 变成了float的样子了. 发现了pandas一个坑:如果列有NAN,则默认给数据转换为floa ...

  9. Pandas 筛选操作

    # 导入相关库 import numpy as np import pandas as pd 在数据处理过程中,经常会遇到要筛选不同要求的数据.通过 Pandas 可以轻松时间,这一篇我们来看下如何使 ...

随机推荐

  1. 9)用request方式

    一个带有html的代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  2. Django路由层与视图层

    表与表之间建关系 图书管理系统为例 书籍表 出版社表 作者表 三个表之间的关系: 考虑表之间的关系:换位思考 1.书籍和出版社是一对多,外键字段建立在书籍表中 2.书籍和作者是多对多, 需要建立第三方 ...

  3. 关于 Xpath 定位

    关于 Xpath 定位 问: // 和 / 的区别 表达式 描述 nodename 选取此节点的所有子节点. / 从根节点选取. // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. . ...

  4. 对数据集进行最优分箱和WOE转换

    对数据集分箱的方式三种,等宽等频最优,下面介绍对数据集进行最优分箱,分箱的其他介绍可以查看其他的博文,具体在这就不细说了: 大体步骤: 加载数据: 遍历所有的feature, 分别处理离散和连续特征: ...

  5. left join on注意点

    右侧表的条件参数需要放在on后面 where 后面进放置左表的条件参数 比如消息表和用户消息表 消息表里存在类型为<系统消息>的消息是发送给全部用户 我们发送给系统消息时,不直接插入用户消 ...

  6. “全隐藏式3D摄像头”亮相,FindX如何将设计与体验融为一体

    北京时间6月20日,OPPO在卢浮宫发布暌违四年之久的Find旗舰系列新手机--Find X.在Find X背后,我认为其设计值得深思.尤其是Find X为突破传统设计束缚,首创双轨潜望结构有着重要启 ...

  7. VS制作dll、def文件的使用、dll加入工程使用

    1.VS新建工程,在选项的时候,选择dll和空项目,保持干净的dll库: 创建完以后,添加头文件以及源文件. 2.将外部模块使用的接口导出: (1)函数导出: __declspec(dllexport ...

  8. OfficeCommandbarDesigner20170202.rar

    OfficeCommandbarDesigner用于对Office各个常用组件.VBE的工具栏进行查看和编辑的工具. 界面主要分为上下两个表格控件,上面的控件列举出所有Commandbar,下面的控件 ...

  9. Spring-security整理

    出于某些原因,需要学习一下spring的安全框架.(研究半天,如果单单说用户认证和授权这块儿,我感觉还是shiro好用.) spring security介绍可以参考一下以下文档: (满满的羡慕啊)我 ...

  10. ROS中的日志(log)消息

    学会使用日志(log)系统,做ROS大型项目的主治医生 通过显示进程的运行状态是好的习惯,但需要确定这样做不会影响到软件的运行效率和输出的清晰度.ROS 日志 (log) 系统的功能就是让进程生成一些 ...