使用pandas筛选出指定列值所对应的行

摘要:
df表示。set_索引。xs#xs方法适用于多索引DataFrame#的数据过滤。index=df['A']#将列A用作DataFrame df的行索引。loc['fo',:]#使用布尔df。loc[df['A']=='o']使用APIpd。数据帧。查询方法。当数据量较大时,效率比传统方法更有效。数据。query#多条件df查询数据提取不仅仅是上面提到的情况,第一个答案给出了以下常见情况:1.筛选出列值等于标量的行,并使用==df。loc[df['column_name']==some_Value]2.筛选出列值属于某个范围的行,然后使用isindf。loc[df['column_name']isin]#some_值是可迭代的对象。3.对多个条件使用&时,&的优先级高于˃=或˂=,因此请注意使用括号。df表示。loc[&]4.筛选出列值不等于某些值的行。df['列名称']!

在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})

使用pandas筛选出指定列值所对应的行第1张

布尔索引

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

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

使用pandas筛选出指定列值所对应的行第2张

位置索引

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

mask = df['A'] == 'foo'
pos = np.flatnonzero(mask)  # 返回的是array([0, 2, 4, 6, 7])
df.iloc[pos]

#常见的iloc用法
df.iloc[:3,1:3]

使用pandas筛选出指定列值所对应的行第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']

使用pandas筛选出指定列值所对应的行第4张

使用API

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

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

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

使用pandas筛选出指定列值所对应的行第5张

数据提取不止前面提到的情况,第一个答案就给出了以下几种常见情况:
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筛选出指定列值所对应的行》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇给Ubuntu安装KDE桌面 [转]U盘启动盘安装win10出现cdboot:couldn't find ntldr下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL SQL优化

前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧。 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础。 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO...

一篇文章教会你创建vue项目和使用vue.js实现数据增删改查

【一、项目背景】 在管理员的一些后台页面里,数据列表中都会对这些数据进行增删改查的操作,例如管理员添加商品、修改商品价格、删除商品、查询商品,我们应该关注这些数据的操作和处理。 【二、项目目标】 主要有以下5个目标: 1、如何创建vue项目。 2、数据添加方法:获取到id和name在data上面获取,组织一个对象,把对象通过数组的相关方法,添加到当前dat...

pandas的基础使用

从 CSV 文件中读取数据 这个数据集是一个列表,蒙特利尔的 7 个不同的自行车道上每天有多少人。 broken_df = pd.read_csv('../data/bikes.csv') # 查看前三行 broken_df[:3] 你可以看到这完全损坏了,说明读取方式不合适。 read_csv 拥有一堆选项能够让我们修复它,在这里我们: 将列分隔符改...

MySQL性能优化神器—explain

一、explain是什么? 简单来讲就是官方给的一个优化工具,直接在你的SQL语句前加上explain,执行整条语句,之后你就可以根据执行结果优化你的SQL啦,废话不多说,直接刚实例 测试实例 1、创建测试表 CREATE TABLE `sql_explain_student`( `id`int(11)NOT NULL AUTO_INCREMENT CO...

sql server维护解决方案(备份、检查完整性、索引碎片整理)

请务必看原文原文:https://ola.hallengren.com/frequently-asked-questions.html经常问的问题入门 如何开始使用SQL Server维护解决方案? SQL Server维护解决方案入门很容易。跟着这些步骤。 下载MaintenanceSolution.sql。 在脚本中,找到以下行:SET @Ba...

Pandas系列教程(3)Pandas数据查询

Pandas数据查询pandas 查询数据的几种方法 df.loc方法,根据行,列的标签值查询 df.iloc方法,根据行,列的数字位置查询 df.where方法 df.query方法 .loc即可以查询,又能覆盖雪茹,强烈推荐 pandas 使用df.loc查询数据的方法 使用单个label值查询数据 使用值列表批量查询 使用数值区间进行范围查询...