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 08 Python
Python端口扫描简单程序
Nov 10 Python
Python面向对象编程基础解析(二)
Oct 26 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
Python识别处理照片中的条形码
Nov 16 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
Feb 06 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 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 UTF8 文件的签名问题
2009/10/30 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
浅谈php://filter的妙用
2019/03/05 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
详解Angular如何正确的操作DOM
2018/07/06 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
pytorch 求网络模型参数实例
2019/12/30 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
2014年开学第一课活动方案
2014/03/06 职场文书
激励口号大全
2014/06/17 职场文书
安全责任书范文
2014/08/25 职场文书
争做文明公民倡议书
2014/08/29 职场文书
校园运动会广播稿
2014/10/06 职场文书
招商银行收入证明
2015/06/17 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
工商局调档介绍信
2015/10/22 职场文书
初中思想品德教学反思
2016/02/24 职场文书
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL