pandas DataFrame 数据筛选

  • DataFrame 数据筛选
    • 数据筛选基本格式
      • contains
      • isin
      • 多个条件与或
    • 数据筛选进阶
      • groupby
      • agg
      • np.where

DataFrame 数据筛选

近期使用pandas比较频繁,在进行数据处理的时候经常要用到dataframe的数据筛选功能,这里做个小结。

数据有以下的格式:

columns = [“blockNumber”,“timestamp”,“transactionHash”,“from”,“to”,“creates”,……“isError”]

数据筛选基本格式

初级筛选:

==, !=, >, >=, <, <=

主要用于简单的判断

contains

选取"from"列数据,最后一位为0或a的数据。(数据类型默认str)

data[data['from'].str[-1:].str.contains('0|a')]

contains语句中,可以以’|'符号为分割,添加多个候选项。

这里由于要只选最后一位,需要使用两次 str 方法。

isin

已有一个取值数组,目标是选择数据中,"from"数据的值在取值数组内的数据

targetList = ['0x12','0x1a','0x98', ... , '0x82']
data[data['from'].isin(targetList)]

这里targetList最好保持list的数据类型,使用pandas.Series可能会有意外的错误

反过来,如果目标是选择数据中,"from"数据的值不在取值数组内的数据

targetList = ['0x12','0x1a','0x98', ... , '0x82']
data[`data['from'].isin(targetList)]

仔细注意,这里是在前面加个反引号 ` ,通过反引号来表示取反

多个条件与或

选取的是数据中,"from"列数据的取值在目标数组内,或者"to"列数据取值最后一位为0或a的数据

targetList = ['0x12','0x1a','0x98', ... , '0x82']
data[(data['from'].isin(targetList)) | (data['to'].str[-1:].str.contains('0|a'))]

选取的是数据中,"from"列数据的取值在目标数组内,并且"to"列数据最后一位为0或a的数据

targetList = ['0x12','0x1a','0x98', ... , '0x82']
data[(data['from'].isin(targetList)) & (data['to'].str[-1:].str.contains('0|a'))]

如果是多个条件并列在一起,每个条件都需要用括号括起来。

数据筛选进阶

这里主要介绍一些,跟数据库操作相似的数据筛选,假设数据格式如下:

columns = ['from', 'to', 'weight'] # from,to 都是 str数据,weight是 int 数据

groupby

这里,假设一个需求是,统计from中的值,出现的次数,我们很容易想到可以通过value_counts() 方法直接获取:

pd.DataFrame(data['from'].value_counts())

这里value_counts()得到的是一个pandas.Series
那么更进一步,如果想知道"from"中的每个取值,对应的"to"取值跟"weight"取值分别是多少,可以使用:

pd.DataFrame(data.groupby('from'))

agg

如果要统计的是 from 中的值,每个值对应的weight总和是多少,这时候需要使用到groupbyagg

pd.DataFrame(data.groupby('from').agg('sum'))

np.where

假设现在的需求是,将from跟to的数据,每一行按照 from > to 的顺序交换(注意不是整列交换)。这时可以使用np.where实现。

    data['from'], data['to']= np.where(data['from'] > data['to'], [data['to'], data['from']], [data['from'], data['to']])

np.where使用格式是:

np.where(condition, Yes, No)

conditionTrue时,取值为Yes,为False时,取值是No

DataFrame 数据筛选相关推荐

  1. pandas DataFrame数据筛选和切片

    DataFrame数据筛选--loc,iloc,ix,at,iat 条件筛选 单条件筛选 选取col1列的取值大于n的记录: data[data['col1']>n] 筛选col1列的取值大于n ...

  2. 【pandas】--DataFrame数据筛选(二)

    相关篇: DataFrame数据处理(一) dataframe高级用法三 一.数据选取 按索引标签 选取(loc做法) 按索引位置 选取(iloc做法) 1.1选取第1行的数据(选取单行数据) .lo ...

  3. Python中pandas.Dataframe数据筛选

    Dataframe可以实现强大的数据筛选功能,下面简单举几个例子: # 创建一个DataFrame import pandas as pd import numpy as np df = pd.Dat ...

  4. dataframe数据筛选后求和

    df1=df[(df['age']>10) & (df['age']<30)]['profit'].sum() 求age在10~30之间的profit之和

  5. R语言对dataframe进行行数据筛选(row selection)多种方案:使用R原生方法、data.table、dplyr等方案

    R语言对dataframe进行行数据筛选(row selection)多种方案:使用R原生方法.data.table.dplyr等方案 目录

  6. R语言使用subset函数基于组合逻辑筛选dataframe符合条件的数据行(select observations)、并指定需要保留的dataframe数据列或者字段

    R语言使用subset函数基于组合逻辑筛选dataframe符合条件的数据行(select observations).并指定需要保留的dataframe数据列或者字段 目录

  7. pandas获取dataframe数据列的数据类型、获取dataframe每类数据类型数据列的个数、使用select_dtypes函数、include参数以及exclude参数按照数据类型筛选数据

    pandas获取dataframe数据列的数据类型.获取dataframe每类数据类型数据列的个数.使用select_dtypes函数.include参数以及exclude参数按照数据类型筛选数据 目 ...

  8. pandas基于列表内容对dataframe数据行进行筛选(isin函数)实战:Filter DataFrame rows on a list of values

    pandas基于列表内容对dataframe数据行进行筛选(isin函数)实战:Filter DataFrame rows on a list of values 目录

  9. python dataframe 列筛选_pandas系列之DataFrame 行列数据筛选实例

    一.对DataFrame的认知 DataFrame的本质是行(index)列(column)索引+多列数据. 为了简化理解,我们不妨换个思路- 现实中,为了简化对一件事物的描述,我们会选择几个特征. ...

最新文章

  1. Python十大装腔语法
  2. 复旦陈静静 | 把握当下,坚持热爱,与食物图像识别结缘的科研之路
  3. mysql同步出现错误
  4. 算法---------寻找重复的子树(Java版本)
  5. Mysql 授权控制
  6. 算法提高课-图论-单源最短路的综合应用-AcWing 342. 道路与航线:最短路dijkstra、拓扑排序 、综合题、好题
  7. Step by Step Setup Git Server on Windows with CopSSH + msysGit and Integrate Git with Visual Studio
  8. 清除ubuntu下缓存、软件安装包和多余内核
  9. suse系统关闭防火墙
  10. HDOJ-3790-最短路径问题 解题报告
  11. .NET(c#) 移动APP开发平台 - Smobiler(1)
  12. Spring 静态代理和动态代理
  13. 精讲RestTemplate第6篇-文件上传下载与大文件流式下载
  14. 2020移动apn接入点哪个快_最新联通上网卡APN的设置方法
  15. 中富金石投教怎么样?让专业投资创造更多财富机会
  16. 边云协同的优点_与云端握手 是时候谈谈边云协同这个边缘计算新风向了
  17. 一篇文章带你了解,App 测试工具
  18. AI测试】人工智能测试整体介绍——第五部分
  19. 高版本Android,鸿蒙2.0,debug安装解析失败
  20. 怎么用EDIUS将静帧图片做出动态特效

热门文章

  1. 你真的理解C语言的灵魂 “ 指针 ” 吗?(初阶篇)
  2. 解决margin塌陷问题
  3. 怎样通过百度文库引流?使得你的网络业绩倍增
  4. Python实现壁纸批量下载
  5. 有线通信技术类毕业论文文献(推荐10篇)
  6. 综合布线测试仪的测试方法与标准
  7. 清除浏览器默认表单边框/背景特效和下拉菜单背景
  8. find_package()快速理解
  9. 2022卡塔尔世界杯随笔
  10. 使用selenium自动秒抢淘宝商品(附详细入门指南)