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爬虫:通过关键字爬取百度图片
Feb 17 Python
python对DICOM图像的读取方法详解
Jul 17 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
Python建立Map写Excel表实例解析
Jan 17 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
python+splinter自动刷新抢票功能
Sep 25 Python
python 设置输出图像的像素大小方法
Jul 04 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
python 画函数曲线示例
Dec 04 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 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
PHP脚本的10个技巧(8)
2006/10/09 PHP
建立文件交换功能的脚本(三)
2006/10/09 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
详解使用Python处理文件目录的相关方法
2015/10/16 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
Python assert语句的简单使用示例
2019/07/28 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
python制作朋友圈九宫格图片
2019/11/03 Python
关于Keras Dense层整理
2020/05/21 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
年度献血先进个人事迹材料
2014/02/14 职场文书
《满井游记》教学反思
2014/02/26 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
党员自评材料范文
2014/12/17 职场文书
退税申请报告怎么写
2015/05/18 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server