python pandas库中DataFrame对行和列的操作实例讲解


Posted in Python onJune 09, 2018

用pandas中的DataFrame时选取行或列:

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的前几行数据,默认为前五行,需要前十行则data.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) #选取第二行
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

重新命名后就可以用dataframe.drop([columns])来删除了,当然不用我这样全部给列名替换掉了,可以只是改变未命名的那个列,然后删除。不过这个用起来总是觉得有点low,有没有更好的方法呢,有,可以不去删除,直接:

data7 = data6.ix[:,1:]

这样既不改变原有数据,也达到了删除神烦列,当然我这里时第0列删除,可以根据实际选择所在的列删除之,至于这个原理,可以看下前面的对列的操作。

以上这篇python pandas库中DataFrame对行和列的操作实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的类与对象之描述符详解
Mar 27 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
Python的Flask框架中实现简单的登录功能的教程
Apr 20 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
python抖音表白程序源代码
Apr 07 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
Python气泡提示与标签的实现
Apr 01 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
python pandas修改列属性的方法详解
Jun 09 #Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 #Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 #Python
pandas 小数位数 精度的处理方法
Jun 09 #Python
Numpy数据类型转换astype,dtype的方法
Jun 09 #Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 #Python
浅谈DataFrame和SparkSql取值误区
Jun 09 #Python
You might like
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
python实现数字炸弹游戏程序
2020/07/17 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
DTD的含义以及作用
2014/01/26 面试题
旅游管理专业个人求职信范文
2013/12/24 职场文书
《灯光》教学反思
2014/02/08 职场文书
电子商务求职信
2014/06/15 职场文书
趵突泉导游词
2015/02/03 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技