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 15 Python
pygame实现弹力球及其变速效果
Jul 03 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
Python爬虫实例爬取网站搞笑段子
Nov 08 Python
python、java等哪一门编程语言适合人工智能?
Nov 13 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
python实现统计文本中单词出现的频率详解
May 20 Python
python实践项目之监控当前联网状态详情
May 23 Python
python实现简单银行管理系统
Oct 25 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 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 _autoload自动加载类与机制分析
2012/02/10 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
javascript强制点击广告的方法
2015/02/06 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
微信小程序slider组件使用详解
2018/01/31 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
Python中的Numpy入门教程
2014/04/26 Python
Python深入学习之内存管理
2014/08/31 Python
python多线程用法实例详解
2015/01/15 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python