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 07 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
python如何对实例属性进行类型检查
Mar 20 Python
python导入pandas具体步骤方法
Jun 23 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
python 实现分组求和与分组累加求和代码
May 18 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
Django数据统计功能count()的使用
Nov 30 Python
全网最全python库selenium自动化使用详细教程
Jan 12 Python
Python实现socket库网络通信套接字
Jun 04 Python
python playwright之元素定位示例详解
Jul 23 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
MVC模式的PHP实现
2006/10/09 PHP
PHP中session变量的销毁
2014/02/27 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
二级域名或跨域共享Cookies的实现方法
2008/08/07 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python功能键的读取方法
2015/05/28 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python之字典对象的几种创建方法
2020/09/30 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
骨干教师事迹材料
2014/12/17 职场文书
中标通知书
2015/04/17 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
python实现会员管理系统
2022/03/18 Python
hive数据仓库新增字段方法
2022/06/25 数据库