python pandas dataframe 行列选择,切片操作方法


Posted in Python onApril 10, 2018

SQL中的select是根据列的名称来选取;Pandas则更为灵活,不但可根据列名称选取,还可以根据列所在的position(数字,在第几行第几列,注意pandas行列的position是从0开始)选取。相关函数如下:

1)loc,基于列label,可选取特定行(根据行index);

2)iloc,基于行/列的position;

3)at,根据指定行index及列label,快速定位DataFrame的元素;

4)iat,与at类似,不同的是根据position来定位的;

5)ix,为loc与iloc的混合体,既支持label也支持position;

实例

import pandas as pd
import numpy as np


df = pd.DataFrame({'total_bill': [16.99, 10.34, 23.68, 23.68, 24.59],
          'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
          'sex': ['Female', 'Male', 'Male', 'Male', 'Female']})
# data type of columns
print df.dtypes
# indexes
print df.index
# return pandas.Index
print df.columns
# each row, return array[array]
print df.values
print df
sex      object
tip      float64
total_bill  float64
dtype: object
RangeIndex(start=0, stop=5, step=1)
Index([u'sex', u'tip', u'total_bill'], dtype='object')
[['Female' 1.01 16.99]
 ['Male' 1.66 10.34]
 ['Male' 3.5 23.68]
 ['Male' 3.31 23.68]
 ['Female' 3.61 24.59]]
   sex  tip total_bill
0 Female 1.01    16.99
1  Male 1.66    10.34
2  Male 3.50    23.68
3  Male 3.31    23.68
4 Female 3.61    24.59
print df.loc[1:3, ['total_bill', 'tip']]
print df.loc[1:3, 'tip': 'total_bill']
print df.iloc[1:3, [1, 2]]
print df.iloc[1:3, 1: 3]
total_bill  tip
1    10.34 1.66
2    23.68 3.50
3    23.68 3.31
  tip total_bill
1 1.66    10.34
2 3.50    23.68
3 3.31    23.68
  tip total_bill
1 1.66    10.34
2 3.50    23.68
  tip total_bill
1 1.66    10.34
2 3.50    23.68

错误的表示:

print df.loc[1:3, [2, 3]]#.loc仅支持列名操作
KeyError: 'None of [[2, 3]] are in the [columns]'
print df.loc[[2, 3]]#.loc可以不加列名,则是行选择
sex  tip total_bill
2 Male 3.50    23.68
3 Male 3.31    23.68
print df.iloc[1:3]#.iloc可以不加第几列,则是行选择
sex  tip total_bill
1 Male 1.66    10.34
2 Male 3.50    23.68
print df.iloc[1:3, 'tip': 'total_bill']
TypeError: cannot do slice indexing on <class 'pandas.indexes.base.Index'> with these indexers [tip] of <type 'str'>
print df.at[3, 'tip']
print df.iat[3, 1]
print df.ix[1:3, [1, 2]]
print df.ix[1:3, ['total_bill', 'tip']]
3.31
3.31
  tip total_bill
1 1.66    10.34
2 3.50    23.68
3 3.31    23.68
  total_bill  tip
1    10.34 1.66
2    23.68 3.50
3    23.68 3.31
print df.ix[[1, 2]]#行选择
sex  tip total_bill
1 Male 1.66    10.34
2 Male 3.50    23.68
print df[1: 3]
print df[['total_bill', 'tip']]
# print df[1:2, ['total_bill', 'tip']] # TypeError: unhashable type
sex  tip total_bill
1 Male 1.66    10.34
2 Male 3.50    23.68
  total_bill  tip
0    16.99 1.01
1    10.34 1.66
2    23.68 3.50
3    23.68 3.31
4    24.59 3.61
print df[1:3,1:2]
TypeError: unhashable type

总结

1).loc,.iloc,.ix,只加第一个参数如.loc([1,2]),.iloc([2:3]),.ix[2]…则进行的是行选择

2).loc,.at,选列是只能是列名,不能是position

3).iloc,.iat,选列是只能是position,不能是列名

4)df[]只能进行行选择,或列选择,不能同时进行列选择,列选择只能是列名。

以上这篇python pandas dataframe 行列选择,切片操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现文件按照日期命名的方法
Jul 09 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
python实现发送form-data数据的方法详解
Sep 27 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 Python
python3下实现搜狗AI API的代码示例
Apr 10 #Python
Python基于pycrypto实现的AES加密和解密算法示例
Apr 10 #Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 #Python
对pandas中apply函数的用法详解
Apr 10 #Python
Python 25行代码实现的RSA算法详解
Apr 10 #Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 #Python
Python基于socket模块实现UDP通信功能示例
Apr 10 #Python
You might like
PHP伪静态页面函数附使用方法
2008/06/20 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python函数返回值实例分析
2015/06/08 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
python django生成迁移文件的实例
2019/08/31 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
Python定义一个函数的方法
2020/06/15 Python
python 将Excel转Word的示例
2021/03/02 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
安全生产标语口号
2015/12/26 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers