python中pandas库中DataFrame对行和列的操作使用方法示例


Posted in Python onJune 14, 2020

用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, 
    #即末端是包含的 

#——————新版本pandas已舍弃该方法,用iloc代替———————
data.irow(0)  #取data的第一行
data.icol(0)  #取data的第一列

ser.iget_value(0) #选取ser序列中的第一个
ser.iget_value(-1) #选取ser序列中的最后一个,这种轴索引包含索引器的series不能采用ser[-1]去获取最后一个,这会引起歧义。
#————————————————————————————-----------------

data.head() #返回data的前几行数据,默认为前五行,需要前十行则data.head(10)
data.tail() #返回data的后几行数据,默认为后五行,需要后十行则data.tail(10)

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:]1

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

github地址

到此这篇关于python中pandas库中DataFrame对行和列的操作使用方法示例的文章就介绍到这了,更多相关pandas库DataFrame行列操作内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中数字以及算数运算符的相关使用
Oct 12 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
利用Python进行异常值分析实例代码
Dec 07 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
基于python进行桶排序与基数排序的总结
May 29 Python
Python对wav文件的重采样实例
Feb 25 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
Python列表如何更新值
May 27 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 Python
Django 构建模板form表单的两种方法
Jun 14 #Python
Python Django搭建网站流程图解
Jun 13 #Python
Python xpath表达式如何实现数据处理
Jun 13 #Python
Python轻量级web框架bottle使用方法解析
Jun 13 #Python
PyInstaller运行原理及常用操作详解
Jun 13 #Python
Pandas缺失值2种处理方式代码实例
Jun 13 #Python
Python Django中间件使用原理及流程分析
Jun 13 #Python
You might like
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
ES6中的Promise代码详解
2017/10/09 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
django连接oracle时setting 配置方法
2019/08/29 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
先进班组材料范文
2014/12/25 职场文书
学术会议领导致辞
2015/07/29 职场文书
九年级历史教学反思
2016/02/19 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle