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 的列表遍历删除实现代码
Apr 12 Python
Python正则表达式经典入门教程
May 22 Python
python 实现数组list 添加、修改、删除的方法
Apr 04 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
在PyCharm中批量查找及替换的方法
Jan 20 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
Python Numpy,mask图像的生成详解
Feb 19 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
浅谈Python 函数式编程
Jun 20 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 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来处理多个提交任务
2006/10/09 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
Php Cookie的一个使用注意点
2008/11/08 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
Python合并字符串的3种方法
2015/05/21 Python
python使用turtle库绘制时钟
2020/03/25 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
使用Python实现批量ping操作方法
2020/05/06 Python
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
出纳员岗位责任制
2014/02/11 职场文书
集体婚礼策划方案
2014/02/22 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
市场拓展计划书
2014/05/03 职场文书
企业员工薪酬方案
2014/06/04 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
体育活动总结
2015/02/04 职场文书
热爱劳动主题班会
2015/08/14 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript