dataFrame 切片操作
Posted 风雷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dataFrame 切片操作相关的知识,希望对你有一定的参考价值。
loc——通过行标签索引行数据 # iloc——通过行号索引行数据 # ix——通过行标签或者行号索引行数据(基于loc和iloc 和at 和iat 的混合) # 同理,索引列数据也是如此! # : 在切片操作相当于数组,前后没有值时取全部,前后为数字序号时,不包括末端,前后为名称时则包括末端 # 特殊情况 df[1:] 相当于第一行到最后一行, df[1:-1] 第一行到倒数第二行 # at等价于loc, iat等价于iloc,但是只能取到一个数据, 单数速度更快 # 直接通过df获取数据,和ix的区别,默认序号取行, 默认字符串其他取列, 正常获取格式 df[行][列],(注意列的格式不能使用 :格式, 另外不能使用 df[行,列] 格式获取) data=[[1,2,3],[4,5,6]] index=[‘A‘,‘B‘]#行号 columns=[‘a‘,‘b‘,‘c‘]#列号 df=pd.DataFrame(data,index=index,columns=columns)#生成一个数据框 #---------------------------------------获取单行数据----------------------------------------------------------- # 只能用索引名,如果未指定索引,则是自带(0--N) print df.loc[‘A‘] # 只能用索序号, 取第一行 print df.iloc[0] # 使用ix测试,取第一行 print df.ix[‘A‘] print df.ix[0] #---------------------------------------获取单行数据----------------------------------------------------------- #---------------------------------------获取列数据----------------------------------------------------------- # 全部行,列名为‘a‘的数据 , 等价于 df.loc[:][ ‘a‘] 和 df[‘a‘] # 使用loc print df.loc[:, ‘a‘] print df.loc[:][ ‘a‘] print df[‘a‘] # 使用iloc print df.iloc[:, 0] # 使用ix print df.ix[:, 0] print df.ix[:, ‘a‘] #---------------------------------------获取列数据----------------------------------------------------------- #---------------------------------------获取多行数据----------------------------------------------------------- # 使用名称时末端包含 print df.loc[‘A‘:‘B‘] # 使用默认索引时,末端不包含,所以需要使用0: 2 print df.iloc[0:2] print df.ix[‘A‘:‘B‘] print df.ix[0:2] #---------------------------------------获取多行数据----------------------------------------------------------- #---------------------------------------获取多列数据----------------------------------------------------------- # 等价于 df.loc[:, [‘a‘,‘b‘]] # 取全部行,‘a‘, ‘b‘列 print df.loc[:, ‘a‘:‘b‘] print df.iloc[:, 0:2] print df.ix[:, ‘a‘:‘b‘] print df.ix[:, 0:2] #---------------------------------------获取多列数据----------------------------------------------------------- #---------------------------------------获取多行多列数据----------------------------------------------------------- #取第一行 ‘a‘,‘b‘列 print df.loc[‘A‘,‘a‘:‘b‘] print df.iloc[0, 0:2] print df.ix[‘A‘,‘a‘:‘b‘] print df.ix[0, 0:2] #---------------------------------------获取多行多列数据----------------------------------------------------------- #---------------------------------------直接用df获取数据----------------------------------------------------------- # 取全部行 # 取全部行,全部列 print df[:] # 取第一行,全部列 print df[0:1] # 取第二行到最后一行 print df[1:] # 取第1行到倒数第二行, 不包括最后一行 print df[0:-1] # 取倒数第二行 print df[-2:-1] # 获取前2行 print df[0:2] # 获取‘a‘,‘b‘列, 在df直接取的情况下,不能使用‘a‘:‘b‘, 使用[‘a‘, ‘b‘]代替,而且不能和行出现在同一个数组中 print df[[‘a‘,‘b‘]] # 第一行,‘a‘,‘b‘列, 在df直接取的情况下,不能使用‘a‘:‘b‘, 使用[‘a‘, ‘b‘]代替,而且不能和行出现在同一个数组中,而且必须出现在列后,df[0:1, [[‘a‘,‘b‘]]]这种写法非法 # 等价于 df.ix[0:1, ‘a‘:‘b‘] print df[0:1][[‘a‘,‘b‘]] print df.ix[0:1, ‘a‘:‘b‘] print df.ix[0:1, [‘a‘,‘b‘]] print df.ix[0:1][[‘a‘,‘b‘]] #操作列 #获取列最后一行 print df[‘a‘][-1] #获取列最后两行 print df[‘a‘][-2:] #---------------------------------------直接用df获取数据----------------------------------------------------------- #---------------------------------------直接用at获取数据----------------------------------------------------------- print df.at[‘A‘, ‘a‘] #---------------------------------------直接用at获取数据----------------------------------------------------------- #---------------------------------------直接用iat获取数据----------------------------------------------------------- print df.iat[0, 0] #---------------------------------------直接用iat获取数据-----------------------------------------------------------
以上是关于dataFrame 切片操作的主要内容,如果未能解决你的问题,请参考以下文章
python中dataframe常见操作:取行列切片统计特征值
将 Pandas DataFrame 切片成新的 DataFrame