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实现将绝对URL替换成相对URL的方法
Jun 28 Python
Python自动生产表情包
Mar 17 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
使用python实现链表操作
Jan 26 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
python中p-value的实现方式
Dec 16 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
Python selenium模块实现定位过程解析
Jul 09 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 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
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
JavaScript中Function详解
2015/02/27 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
javascript中Number的方法小结
2016/11/21 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
网络方面基础面试题
2012/11/16 面试题
成人大专生实习期的自我评价
2013/10/02 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
高中教师评语大全
2014/04/25 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python