美文网首页python自学我爱编程呆鸟的Python数据分析
pandas中按行索引数据loc,iloc,ix解析

pandas中按行索引数据loc,iloc,ix解析

作者: Adiwy | 来源:发表于2018-06-19 16:47 被阅读8次

    首先我们先初始化一个dataframe,作为我们的测试数据,方便我们解析:

    data=pd.DataFrame(np.random.rand(10,5),index=[100,99,98,97,96,1,2,3,4,5])
    

    数据的结果如下图所示


    数据data

    看到数据以后,我们需要明确一个事情,就是为什么要使用loc,iloc和ix这样的索引方式,我们使用如下的方式打印data

    data[1]
    

    输出结果


    data[1]的输出结果

    从上图可以看出输出结果为第二列的data值,但是当我们对data做切片处理(slice)后,请看输出结果

    data[1:3]
    
    data[1:3]的输出结果

    输出结果变为按照行进行索引输出了,为了在任何情况下输出都是明确的,(记住明确的比含糊的好!)所以采用loc,iloc和ix方式对行进行索引,下面对这三种索引方式的输出结果放在下面,然后再解释区别

    data.loc[1:3]
    
    data.loc[1:3]的输出结果
    data.iloc[1:3]
    
    data.iloc[1:3]的输出结果
    data.ix[1:3]
    
    data.ix[1:3]的输出结果
    三个索引方式的解析,我看到网上有一段很清晰的解释,贴在下面:
    • loc 在index的标签上进行索引,范围包括start和end.
    • iloc 在index的位置上进行索引,不包括end.
    • ix 先在index的标签上索引,索引不到就在index的位置上索引(如果index非全整数),不包括end.
      结合这段输出再看看上面的输出结果,三个索引所表达的意思很明显,这里要对第三个ix做一下解释,如果index非全整数,代表index索引不是标准的整数,有可能是字符串的索引,如下所示
    data=pd.DataFrame(np.random.rand(10,5),index=['a','b','c','d','e',1,2,3,4,5])
    

    data的结果如下图所示,注意标红的区域:


    带字符串索引的dataframe

    我们再执行

    data.ix[1:3]
    

    执行结果就会发生变化,如下图所示:


    data.ix[1:3]输出结果

    应为ix的这种特殊机制,我前面提到,明确的比含糊的好,所以我们在写代码的时候一定要优先使用loc和iloc!

    相关文章

      网友评论

        本文标题:pandas中按行索引数据loc,iloc,ix解析

        本文链接:https://www.haomeiwen.com/subject/zthaeftx.html