当前位置: 首页 > news >正文

pandas中数据子集的获取

目录

  • 前言
  • 实战

前言

通常,在pandas模块中实现数据框子集的获取可以使用iloc、loc和ix三种方法,这三种方法既可以对数据行进行筛选,也可以实现变量的筛选,它们的语法可以表示成[rows_select,cols_select]。

iloc只能通过行号和列号进行数据的筛选,可以将iloc中的i理解为’integer’,即只能向[rows_select,cols_select]指定整数列表
该索引方式与数组的索引方式类似,都是从0开始,可以间隔取号,对于切片仍然无法取到上限。

loc 要比iloc灵活一些,可以将loc中的l理解成’label’,即可以向 [rows_select,cols_select]指定具体的行标签(行名称)和列标签(字段名)。注意这里的标签不再是索引。而且还可以将row_select指定为具体的筛选条件,在iloc中是无法做到的。

-----ix是iloc和loc的混合,可以将ix理解成mix,该方法吸收了iloc和loc的优点,使数据框子集的获取更加灵活。(高版本pandas已没有该函数)

实战

import pandas as pd 
df1=pd.DataFrame({'name':['张三','李四','王五','赵六','孙七'],'gender':['男','女','女','女','男'],'age':[23,26,22,25,27]
},columns=['name','gender','age'])
###取出数据集中间三行(即所有女性),并且返回姓名和年龄两列
print(df1.iloc[1:4,[0,2]])
print(df1.loc[1:3,['name','age']])
###df1.ix[1:3,[0,2]]###假如数据集没有行号,而是具体的行名称,又该如何呢?
df2=df1.set_index('name')
##取出数据集的中间三行
print(df2.iloc[1:4,:])
print(df2.loc[['李四','王五','赵六'],:])
###df2.ix[1:4,:]#使用筛选条件,取出所有男性的姓名和年龄print(df1.loc[df1.gender=='男',['name','age']])
###df1.ix[df1.gender=='男',['name','age']]

结果如下:

name age
1 李四 26
2 王五 22
3 赵六 25
name age
1 李四 26
2 王五 22
3 赵六 25
gender age
name
李四 女 26
王五 女 22
赵六 女 25
gender age
name
李四 女 26
王五 女 22
赵六 女 25
name age
0 张三 23
4 孙七 27


http://www.mrgr.cn/news/50368.html

相关文章:

  • 惊人秘诀!揭秘ChatGPT写作的最佳提问技巧!帮你拿到满分论文
  • 华宇携司法大模型亮相2024中国移动全球合作伙伴大会
  • 解锁救援秘诀:为什么救生抛投器你用不明白?
  • 探索全流量回溯分析系统:IT运维的必备利器
  • 【RabbitMQ】RabbitMQ 7种工作模式简单使用示例
  • C#归并排序算法(动态图解)
  • 恢复已删除文件的 10 种安卓数据恢复工具
  • Nuxt3部署-Ubuntu系统(Node 服务 + pm2 + Nginx 反向代理)
  • 第J5周:DenseNet+SE-Net实战(TensorFlow版)
  • 基于Python的自然语言处理系列(33):Huggingface基础与Pipeline
  • Piktures 2.17 | 高效相册管理工具
  • 如何用智能码二维码zhinengma.cn做设备标牌
  • OCP在Python中的应用
  • Linux应用框架cpp-tbox之TCP通信(下篇)
  • 【Python爬虫系列】_028.Python玩Redis
  • 源码编译llama.cpp for windows on arm
  • 数据结构与算法:图的高级算法
  • IP协议详细介绍
  • Linux概述
  • 坚持每天写代码,真的能提高编程水平吗?