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

在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')] #~取反

到此这篇关于使用pandas实现筛选出指定列值所对应的行的文章就介绍到这了,更多相关pandas 筛选指定列值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • pandas中去除指定字符的实例

    例表: 假如想要去掉表中的'#',':'而且以'#'和':'为分割线切割数据: #将dfxA_2的每一个分隔符之间的数据提出来 col1=dfxA_2['travel_seq'].str.split('#').str[0] col2=dfxA_2['travel_seq'].str.split('#').str[1] col3=dfxA_2['travel_seq'].str.split('#').str[2].str.split(';').str[0] 这里只是部分代码,实际情况按需求可以灵活

  • pandas.loc 选取指定列进行操作的实例

    今天发现用pandas里面的数据结构可以减少大量的编程工作,从现在开始逐渐积累,记录一下: 使用标签选取数据: df.loc[行标签,列标签] df.loc['a':'b']#选取ab两行数据 df.loc[:,'one']#选取one列的数据 df.loc的第一个参数是行标签,第二个参数为列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则返回的是DataFrame,否则,则为Series. 示例代码: df.loc[ (df.Cabin.notn

  • pandas对指定列进行填充的方法

    实例如下所示: >>> import pandas as pd >>> import numpy as np >>> ts1 = [0, 1, np.nan, np.nan, np.nan, np.nan] >>> ts2 = [0, 2, np.nan, 3, np.nan, np.nan] >>> d = {'X': ts1, 'Y': ts2, 'Z': ts2} >>> df = pd.Da

  • 使用pandas读取csv文件的指定列方法

    根据教程实现了读取csv文件前面的几行数据,一下就想到了是不是可以实现前面几列的数据.经过多番尝试总算试出来了一种方法. 之所以想实现读取前面的几列是因为我手头的一个csv文件恰好有后面几列没有可用数据,但是却一直存在着.原来的数据如下: GreydeMac-mini:chapter06 greyzhang$ cat data.csv 1,name_01,coment_01,,,, 2,name_02,coment_02,,,, 3,name_03,coment_03,,,, 4,name_04

  • python pandas获取csv指定行 列的操作方法

    pandas获取csv指定行,列 house_info = pd.read_csv('house_info.csv') 1:取行的操作: house_info.loc[3:6]类似于python的切片操作 2:取列操作: house_info['price']  这是读取csv文件时默认的第一行索引 3:取两列 house_info[['price',tradetypename']] 取多个列也是同理的,注意里面是一个list的列表,不然会报错误: 4:增加列: house_Info['adre

  • 使用实现pandas读取csv文件指定的前几行

    用于存储数据的csv文件有时候数据量是十分庞大的,然而我们有时候并不需要全部的数据,我们需要的可能仅仅是前面的几行. 这样就可以通过pandas中read_csv中指定行数读取的功能实现. 例如有data.csv文件,文件的内容如下: GreydeMac-mini:chapter06 greyzhang$ cat data.csv ,name_01,coment_01,,,, 2,name_02,coment_02,,,, 3,name_03,coment_03,,,, 4,name_04,co

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

    在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

  • 对Python中DataFrame选择某列值为XX的行实例详解

    如下所示: #-*-coding:utf8-*- import pandas as pd all_data=pd.read_csv("E:/协和问答系统/SenLiu/熵测试数据.csv") #获取某一列值为xx的行的候选列数据 print(all_data) feature_data=all_data.iloc[:,[0,-1]][all_data[all_data.T.index[0]]=='青年'] print(feature_data) 实验结果如下: "C:\Pro

  • python筛选出两个文件中重复行的方法

    本文实例为大家分享了python脚本筛选出两个文件中重复的行数,供大家参考,具体内容如下 ''' 查找A文件中,与B文件中内容不重复的内容 ''' #!usr/bin/python import sys import os ''' 字符串查找函数,使用二分查找法在列表中进行查询 ''' def binarySearch(value, lines): right = len(lines) - 1 left = 0 a = value.strip() while left <= right: mid

  • pandas数据处理基础之筛选指定行或者指定列的数据

    pandas主要的两个数据结构是:series(相当于一行或一列数据机构)和DataFrame(相当于多行多列的一个表格数据机构). 本文为了方便理解会与excel或者sql操作行或列来进行联想类比 1.重新索引:reindex和ix 上一篇中介绍过数据读取后默认的行索引是0,1,2,3...这样的顺序号.列索引相当于字段名(即第一行数据),这里重新索引意思就是可以将默认的索引重新修改成自己想要的样子. 1.1 Series 比方说:data=Series([4,5,6],index=['a',

  • ​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤

    优点: 方便,有专门支持读取csv文件的pd.read_csv()函数. 将csv转换成二维列表形式 支持通过列名查找特定列. 相比csv库,事半功倍 1.读取csv文件 import pandas as pd   file="c:\data\test.csv" csvPD=pd.read_csv(file)   df = pd.read_csv('data.csv', encoding='gbk') #指定编码     read_csv()方法参数介绍 filepath_or_buf

  • asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据等)

    本文实例总结了asp.net DataTable相关操作.分享给大家供大家参考,具体如下: #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// <summary> /// DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// eg:SortExprDataTable(dt,"Sex='男'","Time Desc&quo

  • Python对Excel按列值筛选并拆分表格到多个文件的代码

    场景:集团中心下发本省数据时,并未按地市.业务拆分,现需要按地市.业务拆分并分发到地市. 本文利用Python的pandas包实现了以上场景. 注:本示例代码只实现按单列拆分,如果需要多列筛选拆分,请修改本示例中的filter_column_name与city_name_to_list,并多套一层循环. now, show u the code: # -*- coding: utf-8 -*- """ Created on Fri Nov 1 09:53:30 2019 @a

  • 使用pytorch 筛选出一定范围的值

    我就废话不多说了,大家还是直接看代码吧~ import torch input_tensor = torch.tensor([1,2,3,4,5]) print(input_tensor>3) mask = (input_tensor>3).nonzero() print(mask) print(input_tensor.index_select(0,mask)) tensor([0, 0, 0, 1, 1], dtype=torch.uint8) tensor([3, 4]) tensor(

  • Pandas中根据条件替换列中的值的四种方式

    目录 方法1:使用dataframe.loc[]函数 方法2:使用NumPy.where()函数 方法3:使用pandas掩码函数 方法4:替换包含指定字符的字符串 方法1:使用dataframe.loc[]函数 通过这个方法,我们可以用一个条件或一个布尔数组来访问一组行或列.如果我们可以访问它,我们也可以操作它的值,是的!这是我们的第一个方法,通过pandas中的dataframe.loc[]函数,我们可以访问一个列并通过一个条件改变它的值. 语法:df.loc[ df["column_nam

随机推荐