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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python异常处理总结
Aug 15 Python
Python编写生成验证码的脚本的教程
May 04 Python
Python解惑之True和False详解
Apr 24 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
Jan 11 Python
Python测试人员需要掌握的知识
Feb 08 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
Python之修改图片像素值的方法
Jul 03 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 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 星际争霸
图解上海144收音机
2021/03/02 无线电
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
详解各版本React路由的跳转的方法
2018/05/10 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
Python如何绘制日历图和热力图
2020/08/07 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
三年级学生期末评语
2014/12/26 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
飞越疯人院观后感
2015/06/09 职场文书
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers