pandas DataFrame索引行列的实现
- python版本:3.6
- pandas版本:0.23.4
行索引
索引行有三种方法,分别是locilocix
importpandasaspd importnumpyasnp index=["a","b","c","d"] data=np.random.randint(10,size=(4,3)) df=pd.DataFrame(data,index=index) """ 012 a971 b007 c265 d825 """
loc
loc通过行索引名字来确定行的
单行索引,返回Series对象
df.loc["a"] """ 09 17 21 Name:a,dtype:int64 """ df.loc["b"] """ 00 10 27 Name:b,dtype:int64 """
多行索引,返回DataFrame对象
df.loc[["a","c"]] """ 012 a971 c265 """
iloc
通过行索引序号来确定行的
单行索引,返回Series对象
df.iloc[0] """ 09 17 21 Name:a,dtype:int64 """ df.iloc[1] """ 00 10 27 Name:b,dtype:int64 """
多行索引,返回DataFrame对象
df.iloc[[0,2]] """ 012 a971 c265 """
ix(不建议使用)
通过行索引名字或序号来确定行的,如果行索引index的类型为整型时,使用ix方法索引时为按行索引名字进行索引,如行索引名不存在则会报错
index=[2,3,4,5] df=pd.DataFrame(data,index=index) """ 012 2971 3007 4265 5825 """ df.ix[2] """ 09 17 21 Name:2,dtype:int64 """ #提示信息 """ .ixisdeprecated.Pleaseuse .locforlabelbasedindexingor .ilocforpositionalindexing """ #如果index为整数,则不能按行索引号进行索引 df.ix[0] """ ... KeyError:0 """
列索引
索引行有两种方法,分别是.[]
importpandasaspd importnumpyasnp columns=["i","ii","iii"] data=np.random.randint(10,size=(4,3)) df=pd.DataFrame(data,columns=columns) """ iiiiii 0459 1034 2791 3823 """
通过.属性直接获取指定行,返回Series对象
df.i """ 04 10 27 38 Name:i,dtype:int64 """
[]
单列索引,返回DataFrame对象
df[["i"]] """ i 04 10 27 38 """
多列索引,返回DataFrame对象
df[["i","ii"]] """ iii 045 103 279 382 """
同时索引行及列
通过指定索引名或切片方式进行索引
index=["a","f","c","h"] columns=["i","ii","iii"] df=pd.DataFrame(data,index=index,columns=columns) """ iiiiii a459 f034 c791 h823 """
loc
通过指定行及列索引名进行索引,返回DataFrame对象
df.loc[["a","f"],["ii","iii"]] """ iiiii a59 f34 """
通过指定行及列索引名范围进行索引(包含边值),返回DataFrame对象
df.loc["a":"c","ii":"iii"] """ iiiii a59 f34 c91 """
iloc
通过指定行及列索引号进行索引,返回DataFrame对象
df.iloc[[0,1],[1,2]] """ iiiii a59 f34 """
通过指定行及列索引号范围进行切片索引(左闭右开),返回DataFrame对象
df.iloc[:3,1:3] """ iiiii a59 f34 c91 """
ix(不建议使用)
通过指定行及列索引号范围或名字范围进行切片,返回DataFrame对象
df.ix["a":"c","i":"iii"] df.ix["a":"c",1:3] df.ix[:3,1:3]
tips:只有使用iloc或ix按索引号进行切片索引时才为左闭右开,其余全闭
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。