ix没有按要求引用索引

时间:2017-01-25 07:36:57

标签: python pandas

pandas iloc vs ix vs loc explanation, how are they different?中,它提到:ix通常会尝试表现得像loc,但如果标签不在索引中,则会回归到iloc。< / p>

对于下面的示例,当我使用ix [0]时,它不起作用,发生了什么?

enter image description here

注意:截至Pandas v0.20,.ix indexer is deprecated赞成.iloc / .loc

2 个答案:

答案 0 :(得分:3)

简短说明

考虑数据框df

df = pd.DataFrame(
    np.arange(16).reshape(4, 4),
    list('wxyz'), list('abcd'))

    a   b   c   d
w   0   1   2   3
x   4   5   6   7
y   8   9  10  11
z  12  13  14  15
  • iloc是基于序数位置的索引

    df.iloc[[0, 3], [1, 2]]
    
        b   c
    w   1   2
    z  13  14
    
  • loc是基于标签的索引

    df.loc[['z', 'x'], ['b', 'c']]
    
        b   c
    z  13  14
    x   5   6
    
  • ix试图变得聪明并弄清楚你需要什么,但有时会让人感到困惑,最重要的是会逐步淘汰,不应该使用!!!

答案 1 :(得分:3)

您可以查看docs

  

ix 支持基于混合整数和标签的访问。它主要基于标签,但将回退到整数位置访问,除非相应的轴是整数类型。 .ix 是最常用的,支持 .loc .iloc 中的任何输入。 .ix 还支持浮点标签方案。 .ix 在处理混合的基于位置和标签的层次索引时特别有用。

     

但是,当轴是基于整数的时,仅支持基于标签的访问,而不支持位置访问。因此,在这种情况下,通常最好是明确并使用 .iloc .loc