用pandas中的DataFrame时选取行或列的方法


Posted in Python onJuly 11, 2018

如下所示:

import numpy as np
import pandas as pd
from pandas import Sereis, DataFrame
ser = Series(np.arange(3.))
data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz'))
data['w'] #选择表格中的'w'列,使用类字典属性,返回的是Series类型
data.w  #选择表格中的'w'列,使用点属性,返回的是Series类型
data[['w']] #选择表格中的'w'列,返回的是DataFrame属性
data[['w','z']] #选择表格中的'w'、'z'列
data[0:2] #返回第1行到第2行的所有行,前闭后开,包括前不包括后
data[1:2] #返回第2行,从0计,返回的是单行,通过有前后值的索引形式,
    #如果采用data[1]则报错
data.ix[1:2] #返回第2行的第三种方法,返回的是DataFrame,跟data[1:2]同
data['a':'b'] #利用index值进行切片,返回的是**前闭后闭**的DataFrame, 
    #即末端是包含的 
data.irow(0)  #取data的第一行
data.icol(0)  #取data的第一列
data.head() #返回data的前几行数据,默认为前五行,需要前十行则dta.head(10)
data.tail() #返回data的后几行数据,默认为后五行,需要后十行则data.tail(10)
ser.iget_value(0) #选取ser序列中的第一个
ser.iget_value(-1) #选取ser序列中的最后一个,这种轴索引包含索引器的series不能采用ser[-1]去获取最后一个,这回引起歧义。
data.iloc[-1]  #选取DataFrame最后一行,返回的是Series
data.iloc[-1:]  #选取DataFrame最后一行,返回的是DataFrame
data.loc['a',['w','x']]  #返回‘a'行'w'、'x'列,这种用于选取行索引列索引已知
data.iat[1,1]  #选取第二行第二列,用于已知行、列位置的选取。

例子:

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
data = DataFrame(np.arange(15).reshape(3,5),index=['one','two','three'],columns=['a','b','c','d','e'])
data
Out[7]: 
    a  b  c  d  e
one   0  1  2  3  4
two   5  6  7  8  9
three 10 11 12 13 14
#对列的操作方法有如下几种
data.icol(0)  #选取第一列
E:\Anaconda2\lib\site-packages\spyder\utils\ipython\start_kernel.py:1: FutureWarning: icol(i) is deprecated. Please use .iloc[:,i]
 # -*- coding: utf-8 -*-
Out[35]: 
one    0
two    5
three  10
Name: a, dtype: int32
data['a']
Out[8]: 
one    0
two    5
three  10
Name: a, dtype: int32
data.a
Out[9]: 
one    0
two    5
three  10
Name: a, dtype: int32
data[['a']]
Out[10]: 
    a
one   0
two   5
three 10
data.ix[:,[0,1,2]] #不知道列名只知道列的位置时
Out[13]: 
    a  b  c
one   0  1  2
two   5  6  7
three 10 11 12
data.ix[1,[0]] #选择第2行第1列的值
Out[14]: 
a  5
Name: two, dtype: int32
data.ix[[1,2],[0]]  #选择第2,3行第1列的值
Out[15]: 
    a
two   5
three 10
data.ix[1:3,[0,2]] #选择第2-4行第1、3列的值
Out[17]: 
    a  c
two   5  7
three 10 12
data.ix[1:2,2:4] #选择第2-3行,3-5(不包括5)列的值
Out[29]: 
   c d
two 7 8
data.ix[data.a>5,3]
Out[30]: 
three  13
Name: d, dtype: int32
data.ix[data.b>6,3:4] #选择'b'列中大于6所在的行中的第4列,有点拗口
Out[31]: 
    d
three 13
data.ix[data.a>5,2:4] #选择'a'列中大于5所在的行中的第3-5(不包括5)列
Out[32]: 
    c  d
three 12 13
data.ix[data.a>5,[2,2,2]] #选择'a'列中大于5所在的行中的第2列并重复3次
Out[33]: 
    c  c  c
three 12 12 12
#还可以行数或列数跟行名列名混着用
data.ix[1:3,['a','e']]
Out[24]: 
    a  e
two   5  9
three 10 14
data.ix['one':'two',[2,1]]
Out[25]: 
   c b
one 2 1
two 7 6
data.ix[['one','three'],[2,2]]
Out[26]: 
    c  c
one   2  2
three 12 12
data.ix['one':'three',['a','c']]
Out[27]: 
    a  c
one   0  2
two   5  7
three 10 12
data.ix[['one','one'],['a','e','d','d','d']]
Out[28]: 
   a e d d d
one 0 4 3 3 3
one 0 4 3 3 3
#对行的操作有如下几种:
data[1:2] #(不知道列索引时)选择第2行,不能用data[1],可以用data.ix[1]
Out[18]: 
   a b c d e
two 5 6 7 8 9
data.irow(1)  #选取第二行
E:\Anaconda2\lib\site-packages\spyder\utils\ipython\start_kernel.py:1: FutureWarning: irow(i) is deprecated. Please use .iloc[i]
 # -*- coding: utf-8 -*-
Out[36]: 
a  5
b  6
c  7
d  8
e  9
Name: two, dtype: int32
data.ix[1]  #选择第2行
Out[20]: 
a  5
b  6
c  7
d  8
e  9
Name: two, dtype: int32

data['one':'two'] #当用已知的行索引时为前闭后闭区间,这点与切片稍有不同。
Out[22]: 
   a b c d e
one 0 1 2 3 4
two 5 6 7 8 9
data.ix[1:3] #选择第2到4行,不包括第4行,即前闭后开区间。
Out[23]: 
    a  b  c  d  e
two   5  6  7  8  9
three 10 11 12 13 14
data.ix[-1:] #取DataFrame中最后一行,返回的是DataFrame类型,**注意**这种取法是有使用条件的,只有当行索引不是数字索引时才可以使用,否则可以选用`data[-1:]`--返回DataFrame类型或`data.irow(-1)`--返回Series类型
Out[11]: 
    a  b  c  d  e
three 10 11 12 13 14
data[-1:] #跟上面一样,取DataFrame中最后一行,返回的是DataFrame类型
Out[12]: 
    a  b  c  d  e
three 10 11 12 13 14
data.ix[-1] #取DataFrame中最后一行,返回的是Series类型,这个一样,行索引不能是数字时才可以使用
Out[13]: 
a  10
b  11
c  12
d  13
e  14
Name: three, dtype: int32
data.tail(1)  #返回DataFrame中的最后一行
data.head(1)  #返回DataFrame中的第一行

最近处理数据时发现当pd.read_csv()数据时有时候会有读取到未命名的列,且该列也用不到,一般是索引列被换掉后导致的,有强迫症的看着难受,这时候dataframe.drop([columns,])是没法处理的,怎么办呢,

最笨的方法是直接给列索引重命名:

data6
    Unnamed: 0 high  symbol time
date        
2016-11-01 0  3317.4 IF1611 18:10:44.8
2016-11-01 1  3317.4 IF1611 06:01:04.5
2016-11-01 2  3317.4 IF1611 07:46:25.5
2016-11-01 3  3318.4 IF1611 09:30:04.0
2016-11-01 4  3321.8 IF1611 09:31:04.0

data6.columns = list('abcd')
data6
  a  b  c  d
date        
2016-11-01 0  3317.4 IF1611 18:10:44.8
2016-11-01 1  3317.4 IF1611 06:01:04.5
2016-11-01 2  3317.4 IF1611 07:46:25.5
2016-11-01 3  3318.4 IF1611 09:30:04.0
2016-11-01 4  3321.8 IF1611 09:31:04.0

以上这篇用pandas中的DataFrame时选取行或列的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python标准异常和异常处理详解
Feb 02 Python
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
python实现QQ空间自动点赞功能
Apr 09 Python
python实现小世界网络生成
Nov 21 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python pandas对excel的操作实现示例
Jul 21 Python
用python写PDF转换器的实现
Oct 29 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
Python2实现的图片文本识别功能详解
Jul 11 #Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 #Python
基于数据归一化以及Python实现方式
Jul 11 #Python
numpy.std() 计算矩阵标准差的方法
Jul 11 #Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 #Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 #Python
Python实现识别图片内容的方法分析
Jul 11 #Python
You might like
PHP异常处理浅析
2015/05/12 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
angular2+node.js express打包部署的实战
2017/07/27 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
python实现SMTP邮件发送功能
2020/06/16 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python的几种主动结束程序方式
2019/11/22 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
资深财务管理人员自我评价
2013/09/22 职场文书
工商管理专业应届生求职信
2013/11/04 职场文书
药品质量检测应届生求职信
2013/11/14 职场文书
高中学校对照检查材料
2014/08/31 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
小学见习报告
2014/10/31 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android