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操作xml文件示例
Apr 07 Python
python控制台英汉汉英电子词典
Apr 23 Python
Python代码的打包与发布详解
Jul 30 Python
Python MySQLdb Linux下安装笔记
May 09 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
Django Rest framework之认证的实现代码
Dec 17 Python
python样条插值的实现代码
Dec 17 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
Django celery异步任务实现代码示例
2020/11/26 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
Linux Interview Questions For software testers
2013/05/17 面试题
《美丽的小路》教学反思
2014/02/26 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
成绩报告单家长评语
2014/12/30 职场文书
西安大雁塔导游词
2015/02/10 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python