在pandas iloc vs ix vs loc explanation, how are they different?中,它提到:ix
通常会尝试表现得像loc
,但如果标签不在索引中,则会回归到iloc
。< / p>
对于下面的示例,当我使用ix [0]时,它不起作用,发生了什么?
注意:截至Pandas v0.20,.ix
indexer is deprecated赞成.iloc
/ .loc
。
答案 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 。