• 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获取数据-----------------------------------------------------------
    

      

  • 相关阅读:
    linux命令之sort uniq wc cut
    linux中的sed命令
    find命令
    awk命令
    记录一些运维的零散知识点
    /proc虚拟文件系统
    系统性能查看命令vmstat iostat top
    不得不说的top命令
    解决一个页面多个Jquery冲突问题
    解决"服务器应用程序不可用"的解决办法 服务器应用程序不可用 您试图在此Web服务器上访问的Web应用程序当前不可用
  • 原文地址:https://www.cnblogs.com/chengxin1982/p/9127736.html
Copyright © 2020-2023  润新知