python - how - ¿Es.ix() siempre mejor que.loc() y.iloc() ya que es más rápido y admite el acceso a enteros y etiquetas?
python loc and iloc (1)
Consulte el documento Diferentes opciones para la indexación , indica claramente cuándo y por qué debe usar .loc, .iloc sobre .ix , se trata de un caso de uso explícito:
.ix admite acceso mixto entero y basado en etiquetas. Se basa principalmente en etiquetas, pero recurrirá al acceso posicional entero a menos que el eje correspondiente sea de tipo entero. .ix es el más general y admitirá cualquiera de las entradas en .loc y .iloc. .ix también admite esquemas de etiquetas de punto flotante. .ix es excepcionalmente útil cuando se trata de índices jerárquicos mixtos posicionales y basados en etiquetas.
Sin embargo, cuando un eje está basado en enteros, SOLO se admite el acceso basado en etiquetas y no el acceso posicional. Por lo tanto, en tales casos, generalmente es mejor ser explícito y usar .iloc o .loc.
Espero que esto ayude.
Actualización 22 mar 2017
Gracias al comentario de @Alexander,
Pandas
va a desaprobar
ix
en
0.20
, detalles
here
.
Una de las razones principales es que la mezcla de índices: posicional y de etiqueta (usando efectivamente
ix
) ha sido una fuente importante de problemas para los usuarios.
Se espera que migre para usar
iloc
y
loc
lugar, aquí hay un enlace sobre
cómo convertir el código
.
Estoy aprendiendo la biblioteca de pandas Python. Viniendo de un fondo R, las funciones de indexación y selección parecen más complicadas de lo necesario. Entiendo que .loc () solo se basa en etiquetas y .iloc () solo se basa en enteros.
¿Por qué debería usar .loc () y .iloc () si .ix () es más rápido y admite el acceso a enteros y etiquetas?