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 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
基于Python闭包及其作用域详解
Aug 28 Python
pandas数据预处理之dataframe的groupby操作方法
Apr 13 Python
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
python实现维吉尼亚加密法
Mar 20 Python
python控制nao机器人身体动作实例详解
Apr 29 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
python函数定义和调用过程详解
Feb 09 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
php安装swoole扩展的方法
2015/03/19 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
python中bytes和str类型的区别
2019/10/21 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
应用英语专业自荐信
2014/01/26 职场文书
企业年度评优方案
2014/06/02 职场文书
2019销售早会主持词
2019/06/27 职场文书
java基础——多线程
2021/07/03 Java/Android
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang