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的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
Python 常用的安装Module方式汇总
May 06 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
Python实现的计数排序算法示例
Nov 29 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
Spring http服务远程调用实现过程解析
Jun 11 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 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
Protoss兵种介绍
2020/03/14 星际争霸
如何使用脚本模仿登陆过程
2006/11/22 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
PHP反射学习入门示例
2019/06/14 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python实现字符串匹配算法代码示例
2017/12/05 Python
python 获取字符串MD5值方法
2018/05/29 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
高中同学会活动方案
2014/08/14 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript