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的Django框架中显示对象子集的方法
Jul 21 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
Python批量查询域名是否被注册过
Jun 21 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
python中cPickle类使用方法详解
Aug 27 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
python实现横向拼接图片
Mar 23 Python
基于python实现音乐播放器代码实例
Jul 01 Python
详解python with 上下文管理器
Sep 02 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
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
超清晰的document对象详解
2007/02/27 Javascript
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python中字符串的处理技巧分享
2016/09/17 Python
Python 打印中文字符的三种方法
2018/08/14 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
python脚本调用iftop 统计业务应用流量的思路详解
2019/10/11 Python
python ftplib模块使用代码实例
2019/12/31 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
世界最大的票务市场:viagogo
2017/02/16 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
高中毕业生自我鉴定
2013/11/03 职场文书
会计电算化个人自我评价
2013/11/17 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers