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 正则式 概述及常用字符
May 07 Python
python将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
Python之PyUnit单元测试实例
Oct 11 Python
Python编程中实现迭代器的一些技巧小结
Jun 21 Python
python实现稀疏矩阵示例代码
Jun 09 Python
Python发展简史 Python来历
May 14 Python
Python基础学习之类与实例基本用法与注意事项详解
Jun 17 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
python实现静态web服务器
Sep 03 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
python实现控制台输出彩色字体
Apr 05 Python
python not运算符的实例用法
Jun 30 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 Token(令牌)设计
2008/03/15 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
2016/11/05 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
Django实现全文检索的方法(支持中文)
2018/05/14 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python Tkinter的图片刷新实例
2019/06/14 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
Unix如何添加新的用户
2014/08/20 面试题
酒店行政人事部经理职务说明书
2014/02/26 职场文书
授权委托书范本
2014/04/03 职场文书
村党支部书记承诺书
2014/05/29 职场文书
狂人日记读书笔记
2015/06/30 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
工伤调解协议书
2016/03/21 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang