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数据统计的一些小技巧
Jul 21 Python
python爬取各类文档方法归类汇总
Mar 22 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
用python爬取租房网站信息的代码
Dec 14 Python
python适合人工智能的理由和优势
Jun 28 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
python实现的config文件读写功能示例
Sep 24 Python
Python 切分数组实例解析
Nov 07 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
Python如何给你的程序做性能测试
Jul 29 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
canvas绘制多边形
2017/02/24 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
python多线程抽象编程模型详解
2019/03/20 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
联想中国官方商城:Lenovo China
2017/10/18 全球购物
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
UNIX命令速查表
2012/03/10 面试题
物理教学随笔感言
2014/02/22 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
新课培训心得体会
2014/09/03 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
投标承诺函范文
2015/01/21 职场文书
迟到检讨书
2015/01/26 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL