pandas 数据索引与选取的实现方法


Posted in Python onJune 21, 2019

我们对 DataFrame 进行选择,大抵从这三个层次考虑:行列、区域、单元格。

其对应使用的方法如下:
一. 行,列 --> df[]
二. 区域   --> df.loc[], df.iloc[], df.ix[]
三. 单元格 --> df.at[], df.iat[]

下面开始练习:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randn(6,4), index=list('abcdef'), columns=list('ABCD'))

1. df[]:

一维
行维度:
    整数切片、标签切片、<布尔数组>
列维度:
    标签索引、标签列表、Callable

df[:3]
df['a':'c']
df[[True,True,True,False,False,False]] # 前三行(布尔数组长度等于行数)
df[df['A']>0] # A列值大于0的行
df[(df['A']>0) | (df['B']>0)] # A列值大于0,或者B列大于0的行
df[(df['A']>0) & (df['C']>0)] # A列值大于0,并且C列大于0的行
df['A']
df[['A','B']]
df[lambda df: df.columns[0]] # Callable

2. df.loc[]

二维,先行后列
行维度:
    标签索引、标签切片、标签列表、<布尔数组>、Callable
列维度:
    标签索引、标签切片、标签列表、<布尔数组>、Callable

df.loc['a', :]
df.loc['a':'d', :]
df.loc[['a','b','c'], :]
df.loc[[True,True,True,False,False,False], :] # 前三行(布尔数组长度等于行数)
df.loc[df['A']>0, :]
df.loc[df.loc[:,'A']>0, :]
df.loc[df.iloc[:,0]>0, :]
df.loc[lambda _df: _df.A > 0, :]
df.loc[:, 'A']
df.loc[:, 'A':'C']
df.loc[:, ['A','B','C']]
df.loc[:, [True,True,True,False]] # 前三列(布尔数组长度等于行数)
df.loc[:, df.loc['a']>0]     # a行大于0的列
df.loc[:, df.iloc[0]>0]      # 0行大于0的列
df.loc[:, lambda _df: ['A', 'B']]
df.A.loc[lambda s: s > 0]

3. df.iloc[]

二维,先行后列
行维度:
    整数索引、整数切片、整数列表、<布尔数组>
列维度:
    整数索引、整数切片、整数列表、<布尔数组>、Callable

df.iloc[3, :]
df.iloc[:3, :]
df.iloc[[0,2,4], :]
df.iloc[[True,True,True,False,False,False], :] # 前三行(布尔数组长度等于行数)
df.iloc[df['A']>0, :]    #× 为什么不行呢?想不通!
df.iloc[df.loc[:,'A']>0, :] #×
df.iloc[df.iloc[:,0]>0, :] #×
df.iloc[lambda _df: [0, 1], :]
df.iloc[:, 1]
df.iloc[:, 0:3]
df.iloc[:, [0,1,2]]
df.iloc[:, [True,True,True,False]] # 前三列(布尔数组长度等于行数)
df.iloc[:, df.loc['a']>0] #×
df.iloc[:, df.iloc[0]>0] #×
df.iloc[:, lambda _df: [0, 1]]

4. df.ix[]

二维,先行后列
行维度:
    整数索引、整数切片、整数列表、
    标签索引、标签切片、标签列表、
    <布尔数组>、
    Callable
列维度:
    整数索引、整数切片、整数列表、
    标签索引、标签切片、标签列表、
    <布尔数组>、
    Callable

df.ix[0, :]
df.ix[0:3, :]
df.ix[[0,1,2], :]

df.ix['a', :]
df.ix['a':'d', :]
df.ix[['a','b','c'], :]
df.ix[:, 0]
df.ix[:, 0:3]
df.ix[:, [0,1,2]]

df.ix[:, 'A']
df.ix[:, 'A':'C']
df.ix[:, ['A','B','C']]

5. df.at[]

精确定位单元格
行维度:
    标签索引
列维度:
    标签索引

df.at['a', 'A']

6. df.iat[]

精确定位单元格

行维度:
    整数索引
列维度:
    整数索引

df.iat[0, 0]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的函数的一些高阶特性
Apr 27 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
Python爬取365好书中小说代码实例
Feb 28 Python
基于Tensorflow一维卷积用法详解
May 22 Python
使用keras内置的模型进行图片预测实例
Jun 17 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
python实现二级登陆菜单及安装过程
Jun 21 #Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 #Python
jupyter notebook 中输出pyecharts图实例
Apr 23 #Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 #Python
Pandas删除数据的几种情况(小结)
Jun 21 #Python
pandas.read_csv参数详解(小结)
Jun 21 #Python
pandas 数据结构之Series的使用方法
Jun 21 #Python
You might like
php实现统计邮件大小的方法
2013/08/06 PHP
php判断表是否存在的方法
2015/06/18 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python模块WSGI使用详解
2018/02/02 Python
python实现AES加密和解密
2019/03/27 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
环境工程大学生自荐信
2013/10/21 职场文书
中医药大学毕业生自荐信
2013/11/08 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
管理建议书范文
2014/05/13 职场文书
成本会计岗位职责
2015/02/03 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js