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网络编程之文件下载实例分析
May 20 Python
python实现FTP服务器服务的方法
Apr 11 Python
python编程培训 python培训靠谱吗
Jan 17 Python
浅述python中深浅拷贝原理
Sep 18 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
python数值基础知识浅析
Nov 19 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
python中wheel的用法整理
Jun 15 Python
python2和python3哪个使用率高
Jun 23 Python
Python读取ini配置文件传参的简单示例
Jan 05 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 Python
Django框架之路由用法
Jun 10 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
Express.JS使用详解
2014/07/17 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Python实现截屏的函数
2015/07/25 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
python3安装speech语音模块的方法
2018/12/24 Python
python验证身份证信息实例代码
2019/05/06 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
五十岁生日宴会答谢词
2014/01/15 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
重阳节活动总结
2014/08/27 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
python批量创建变量并赋值操作
2021/06/03 Python
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL