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

原创 2017年02月15日 21:43:18
  • 标签:
  • python /
  • 30760
  • 编辑
  • 删除

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

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 npdf = 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
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]
  • 1
  • 2
  • 3
  • 4
   total_bill   tip
1       10.34  1.66
2       23.68  3.50
3       23.68  3.31tip  total_bill
1  1.66       10.34
2  3.50       23.68
3  3.31       23.68tip  total_bill
1  1.66       10.34
2  3.50       23.68tip  total_bill
1  1.66       10.34
2  3.50       23.68
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

错误的表示:

print df.loc[1:3, [2, 3]]#.loc仅支持列名操作
  • 1
KeyError: 'None of [[2, 3]] are in the [columns]'
  • 1
  • 2
print df.loc[[2, 3]]#.loc可以不加列名,则是行选择
  • 1
    sex   tip  total_bill
2  Male  3.50       23.68
3  Male  3.31       23.68
  • 1
  • 2
  • 3
  • 4
print df.iloc[1:3]#.iloc可以不加第几列,则是行选择
  • 1
    sex   tip  total_bill
1  Male  1.66       10.34
2  Male  3.50       23.68
  • 1
  • 2
  • 3
  • 4
print df.iloc[1:3, 'tip': 'total_bill']
  • 1
TypeError: cannot do slice indexing on <class 'pandas.indexes.base.Index'> with these indexers [tip] of <type 'str'>
  • 1
  • 2
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']]
  • 1
  • 2
  • 3
  • 4
3.31
3.31tip  total_bill
1  1.66       10.34
2  3.50       23.68
3  3.31       23.68total_bill   tip
1       10.34  1.66
2       23.68  3.50
3       23.68  3.31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
print df.ix[[1, 2]]#行选择
  • 1
    sex   tip  total_bill
1  Male  1.66       10.34
2  Male  3.50       23.68
  • 1
  • 2
  • 3
  • 4
print df[1: 3]
print df[['total_bill', 'tip']]
# print df[1:2, ['total_bill', 'tip']]  # TypeError: unhashable type
  • 1
  • 2
  • 3
    sex   tip  total_bill
1  Male  1.66       10.34
2  Male  3.50       23.68total_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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
print df[1:3,1:2]
  • 1
TypeError: unhashable type
  • 1
  • 2

总结

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 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python 30760 python pandas dataframe相关推荐

  1. Kaggle常用函数总结 原创 2017年07月03日 21:47:34 标签: kaggle 493 kaggle比赛也参加了好几次,在这里就把自己在做比赛中用到的函数汇总到这,方便自己以后查阅

    Kaggle常用函数总结 原创 2017年07月03日 21:47:34 标签: kaggle / 493 编辑 删除 kaggle比赛也参加了好几次,在这里就把自己在做比赛中用到的函数汇总到这,方便 ...

  2. The Wide and Deep Learning Model(译文+Tensorlfow源码解析) 原创 2017年11月03日 22:14:47 标签: 深度学习 / 谷歌 / tensorf

    The Wide and Deep Learning Model(译文+Tensorlfow源码解析) 原创 2017年11月03日 22:14:47 标签: 深度学习 / 谷歌 / tensorfl ...

  3. 从变量到封装:一文带你为机器学习打下坚实的Python基础 By 机器之心2017年10月13日 10:43 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要的且常

    首先,什么是 Python?根据 Python 创建者 Guido van Rossum 所言,Python 是一个:高级编程语言,其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达 ...

  4. 从CNN视角看在自然语言处理上的应用 原创 2017年10月24日 00:00:00 1339 作者 | 卞书青 卷积神经网络(Convolutional Neural Network)最早是应用在

    从CNN视角看在自然语言处理上的应用 原创 2017年10月24日 00:00:00 标签: 1339

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

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

  6. 如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技、科技金融等概念的

    如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技.科技金融等概念的热起 ...

  7. Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大

    Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大蟒 ...

  8. 最新Win7 +Python3.6.0(Anaconda3-4.3.21)+Tensorflow的安装与配置(不用切换python3.5) 原创 2017年09月23日 15:14:58 标签:pyt

    最新Win7 +Python3.6.0(Anaconda3-4.3.21)+Tensorflow的安装与配置(不用切换python3.5) 一.首先进入Anaconda官网下载  https://ww ...

  9. Saving James Bond - Easy Version 原创 2017年11月23日 13:07:33

    06-图2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the movie &q ...

最新文章

  1. Nginx重定向到子目录问题
  2. dma访问主存时_STM32F103单片机(五)——DMA
  3. Mysql查询数据库状态及信息
  4. 太漂亮了!66个高颜值的矿物晶体,吸引到你的目光了吗
  5. 前端学习(2):什么是html和css
  6. linkedhashmap 顺序_LinkedHashMap 源码详细分析(JDK1.8)
  7. python处理ppt的插件_几款PPT神器插件,千万不能错过!
  8. Java IO(input output)流二
  9. python主程序子程序_python子程序
  10. Linux之远程连接服务器ssh、telnet
  11. SendMessage 函数
  12. SpringBoot读取配置文件
  13. 时序图(Sequence Diagram)—UML图(六)
  14. 【图像加密】基于matlab混沌算法图像加密解密【含Matlab源码 1218期】
  15. ThinkPHP完美实现分页和美化
  16. server port不起作用
  17. 金融工程学(四):远期和期货的运用
  18. 「360企业安全云」上线,免费护航中小微企业数字化建设
  19. 浅谈:APP开发市场的发展轨迹与未来趋势
  20. 3.处理机调度——作业调度算法与进程调度算法

热门文章

  1. unique_ptr使用介绍
  2. 文本编辑器实现关于对话框的功能
  3. java nginx tomcat_Nginx + Tomcat (java )服务器部署
  4. java实现自动收红包功能_Java实现抢红包功能
  5. cas跨域单点登录原理_CAS实现SSO单点登录原理
  6. c++枚举类型(二) 命名空间
  7. 文巾解题3. 无重复字符的最长子串
  8. “加班文化“到底是如何流行起来的
  9. 从无到有算法养成篇-栈和队列·栈
  10. Python输出py文件模拟代码高亮