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

用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对行和列的操作实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python中pandas.DataFrame对行与列求和及添加新行与列示例

    本文介绍的是python中pandas.DataFrame对行与列求和及添加新行与列的相关资料,下面话不多说,来看看详细的介绍吧. 方法如下: 导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFrame(np.random.randn(4, 5), columns=['A', 'B', 'C', 'D', 'E']) DataFrame数据预览: A

  • 对pandas将dataframe中某列按照条件赋值的实例讲解

    在数据处理过程中,经常会出现对某列批量做某些操作,比如dataframe df要对列名为"values"做大于等于30设置为1,小于30设置为0操作,可以这样使用dataframe的apply函数来实现, 具体实现代码如下: def fun(x): if x >= 30: return 1 else: return 0 values= feature['values'].apply(lambda x: fun(x)) 具体的逻辑可以修改fun函数来实现,但是按照某些条件选择列不是

  • 根据DataFrame某一列的值来选择具体的某一行方法

    原始数据的DF: 此时,我要选择列名isInfected为"手足口病"的样本行: 总结:选择DataFrame里面某一列等于某个值的所有行,用一条命令即可解决即: df.loc[df['columnName']=='the value'] 以上这篇根据DataFrame某一列的值来选择具体的某一行方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 对Python中DataFrame选择某列值为XX的行实例详解

    如下所示: #-*-coding:utf8-*- import pandas as pd all_data=pd.read_csv("E:/协和问答系统/SenLiu/熵测试数据.csv") #获取某一列值为xx的行的候选列数据 print(all_data) feature_data=all_data.iloc[:,[0,-1]][all_data[all_data.T.index[0]]=='青年'] print(feature_data) 实验结果如下: "C:\Pro

  • python pandas dataframe 行列选择,切片操作方法

    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与i

  • pandas系列之DataFrame 行列数据筛选实例

    一.对DataFrame的认知 DataFrame的本质是行(index)列(column)索引+多列数据. 为了简化理解,我们不妨换个思路- 现实中,为了简化对一件事物的描述,我们会选择几个特征. 例如,从(性别.身高.学历.职业.爱好..)等角度去刻画一个人,这些"角度"即为"特征". 其中,不同的行表示不同的记录:列代表特征,不同记录因各个特征之间的差异而不同. DataFrame默认索引是序号(0,1,2-),可以理解成位置索引.一般我们用id标识不同记录,

  • pandas.DataFrame删除/选取含有特定数值的行或列实例

    1.删除/选取某列含有特殊数值的行 import pandas as pd import numpy as np a=np.array([[1,2,3],[4,5,6],[7,8,9]]) df1=pd.DataFrame(a,index=['row0','row1','row2'],columns=list('ABC')) print(df1) df2=df1.copy() #删除/选取某列含有特定数值的行 #df1=df1[df1['A'].isin([1])] #df1[df1['A'].

  • pandas Dataframe行列读取的实例

    如下所示: import matplotlib.pyplot as plt import tkinter import numpy as np import pandas as pd from pandas import Series,DataFrame data = {'a':[1,2,3], 'c':[4,5,6], 'b':[7,8,9] } frame = DataFrame(data,index=['one','two','three']) print(frame) print(fra

  • pandas 选择某几列的方法

    如下所示: col_n = ['名称','收盘价','日期'] a = pd.DataFrame(df,columns = col_n) 以上这篇pandas 选择某几列的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

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

    用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'列,使用类字典属性,返回的是S

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

    用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'列,使用类字典属性,返回的是S

  • Python pandas库中的isnull()详解

    问题描述 python的pandas库中有一个十分便利的isnull()函数,它可以用来判断缺失值,我们通过几个例子学习它的使用方法. 首先我们创建一个dataframe,其中有一些数据为缺失值. import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(10,99,size=(10,5))) df.iloc[4:6,0] = np.nan df.iloc[5:7,2] = np.nan df.iloc[

  • Python pandas库中isnull函数使用方法

    前言: python的pandas库中有⼀个⼗分便利的isnull()函数,它可以⽤来判断缺失值,我们通过⼏个例⼦学习它的使⽤⽅法.⾸先我们创建⼀个dataframe,其中有⼀些数据为缺失值. import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(10,99,size=(10,5))) df.iloc[4:6,0] = np.nan df.iloc[5:7,2] = np.nan df.iloc[7,

  • python pandas库读取excel/csv中指定行或列数据

    目录 引言 1.根据index查询 2.已知数据在第几行找到想要的数据 3.根据条件查询找到指定行数据 4.找出指定列 5.找出指定的行和指定的列 6.在规定范围内找出符合条件的数据 总结 引言 关键!!!!使用loc函数来查找. 话不多说,直接演示: 有以下名为try.xlsx表: 1.根据index查询 条件:首先导入的数据必须的有index 或者自己添加吧,方法简单,读取excel文件时直接加index_col 代码示例: import pandas as pd #导入pandas库 ex

  • Pandas库之DataFrame使用的学习笔记

    1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matlab也可以用cell存放多类型数据),DataFrame的单元格可以存放数值.字符串等,这和excel表很像. 同时DataFrame可以设置列名columns与行名index,可以通过像matlab一样通过位置获取数据也可以通过列名和行名定位,具体方法在后面细说. 2 创建DataFrame 首先声

  • python Pandas库read_excel()参数实例详解

    目录 1.read_excel函数原型 2.参数使用举例 2.1. io和sheet_name参数 2.2. header参数 2.3. skipfooter参数 2.5. parse_dates参数 2.6. converters参数 2.7. na_values参数 2.8. usecols参数 总结 Pandas read_excel()参数使用详解 1.read_excel函数原型 def read_excel(io, sheet_name=0, header=0, names=None

  • 使用DataFrame删除行和列的实例讲解

    本文通过一个csv实例文件来展示如何删除Pandas.DataFrame的行和列 数据文件名为:example.csv 内容为: date spring summer autumn winter 2000 12.2338809 16.90730113 15.69238313 14.08596223 2001 12.84748057 16.75046873 14.51406637 13.5037456 2002 13.558175 17.2033926 15.6999475 13.23365247

  • python numpy库中数组遍历的方法

    1.对于一维数组,可以有: 2. 对于二维数组:考虑可将其看作为矩阵,故可以如下书写二重遍历 这里外层循环的是二维数组A的行,内层则是列 同时c的作用:不想用肉眼直接观察得到行列数,故用A.shape方法获得(2,6)的元组,然后改变数据类型为列表,然后直接使用. 3.对于三维数组,如: 有两个二维数组,二维数组中又有三个长度为4的数组.可以这样子循环: 又len(f) = 2, len(f[0]) = 3, len(f[0][0]) = 4;故可以再一次改进代码,这里就不写了. f[0]:三维

随机推荐