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使用稀疏矩阵节省内存实例
Jun 27 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
使用11行Python代码盗取了室友的U盘内容
Oct 23 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
python lxml中etree的简单应用
May 10 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
Python docutils文档编译过程方法解析
Jun 23 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
PHP常用函数小技巧
2008/09/11 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python实现的栈(Stack)
2018/01/26 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
对python3新增的byte类型详解
2018/12/04 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Django返回HTML文件的实现方法
2020/09/17 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
班级德育工作实施方案
2014/02/21 职场文书
公开服务承诺制度
2014/03/26 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
活动主持人开场白
2015/05/28 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
一文带你探究MySQL中的NULL
2021/11/11 MySQL