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的Zato发送AMQP消息的教程
Apr 16 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
python画一个玫瑰和一个爱心
Aug 18 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
python绘制中国大陆人口热力图
Nov 07 Python
python导入pandas具体步骤方法
Jun 23 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
Python 最强编辑器详细使用指南(PyCharm )
Sep 16 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
Python Selenium库的基本使用教程
Jan 04 Python
django上传文件的三种方式
Apr 29 Python
实操Python爬取觅知网素材图片示例
Nov 27 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
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
php获取地址栏信息的代码
2008/10/08 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
PHP数据类型的总结分析
2013/06/13 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
sails框架的学习指南
2014/12/22 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python动态网页批量爬取
2016/02/14 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
TensorFlow变量管理详解
2018/03/10 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
对python 命令的-u参数详解
2018/12/03 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
如何用python免费看美剧
2020/08/11 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
《动手做做看》教学反思
2014/04/09 职场文书
实习指导老师评语
2014/04/26 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python