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中的CURL PycURL使用例子
Jun 01 Python
Python简单删除目录下文件以及文件夹的方法
May 27 Python
详解Python中的array数组模块相关使用
Jul 05 Python
浅谈Python peewee 使用经验
Oct 20 Python
python绘制直线的方法
Jun 30 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
python轮询机制控制led实例
May 03 Python
Python Json数据文件操作原理解析
May 09 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 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中feof()函数实例测试
2014/08/23 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
php生成rss类用法实例
2015/04/14 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
js实现div色块碰撞
2020/01/16 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
设置python3为默认python的方法
2018/10/31 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
运动会稿件50字
2014/02/17 职场文书
大学生自荐材料范文
2014/12/30 职场文书
信用卡催款律师函
2015/05/27 职场文书
运动会班级前导词
2015/07/20 职场文书
开学第一天的感想
2015/08/10 职场文书
六年级数学教学反思
2016/02/16 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL