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-嵌套列表list的全面解析
Jun 08 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
全面分析Python的优点和缺点
Feb 07 Python
numpy中的高维数组转置实例
Apr 17 Python
详解Django的CSRF认证实现
Oct 09 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 Python
python中mongodb包操作数据库
Apr 19 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
vue.js组件之间传递数据的方法
2017/07/10 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python map和reduce函数用法示例
2015/02/26 Python
python实现简单中文词频统计示例
2017/11/08 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
python else语句在循环中的运用详解
2020/07/06 Python
大学生就业推荐信范文
2013/11/29 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
模范教师材料大全
2014/12/16 职场文书
工作检讨书范文
2015/01/23 职场文书
工作简报范文
2015/07/21 职场文书
SQL Server 中的事务介绍
2022/05/20 SQL Server