È .ix() sempre meglio .loc() e .iloc() visto che è più veloce e supporta l’intero e l’etichetta di accesso?

Sto imparando Python panda biblioteca. Provenienti da una ricerca di sfondo, l’indicizzazione e la selezione delle funzioni sembrano più complicate di quello che devono essere. La mia comprensione è che .loc() è solo un’etichetta in base e .iloc() è solo il numero intero in base.

Perché si dovrebbe mai usare .loc() e .iloc() se .ix() è più veloce e supporta l’intero e l’etichetta di accesso?

 

One Reply
  1. 69

    Si prega di fare riferimento al doc Scelte diverse per l’Indicizzazione, si afferma chiaramente quando e perché si dovrebbe usare .loc .iloc oltre .ix, si tratta di un uso esplicito caso:

    .ix supporta mixed integer e con etichette di accesso. Si tratta principalmente di
    etichette, ma ritorna intero posizionale accesso, a meno che
    il corrispondente asse è di tipo integer. .ix è il più generale e
    supporterà qualsiasi degli ingressi in .loc e .iloc. .ix supporta anche
    in virgola mobile etichetta schemi. .ix è particolarmente utile quando si tratta di
    con un misto di posizione e di etichette gerarchiche indici.

    Tuttavia, quando un asse con un numero intero in base, SOLO con etichette di accesso e
    non posizionale di accesso è supportato. Pertanto, in tali casi, è di solito
    meglio essere espliciti e utilizzare .iloc o .loc.

    Spero che questo aiuta.

    Aggiornamento 22 Mar 2017

    Grazie per il commento da @Alexander, Panda sta per deprecare ix in 0.20, dettagli in qui.

    Uno dei forti motivi dietro è perché la combinazione di indici — posizionale e l’etichetta (in modo efficace utilizzando ix) ha una notevole fonte di problemi per gli utenti.

    È prevista la migrazione di utilizzare iloc e loc qui, invece, è un link sul come convertire il codice.

    • puoi chiarire cosa “Tuttavia, quando un asse con un numero intero in base, SOLO con etichette di accesso e non posizionale di accesso è supportato. Così, in questi casi, di solito è meglio essere espliciti e utilizzare .iloc o .loc.” significa? Quella parte è confuso
    • Non credo di capire quello che mi vuoi chiarire, volete sapere le differenze tra chioces di indice o di come determinare “esplicito”? Forse si può leggere Differenza scelte di indicizzazione.
    • Credo che questo significa che se si utilizza interi come etichette (che potrebbe non corrispondere il loro ordine della colonna), allora non sarà in grado di distinguere quale si intende. Qualcuno mi corregga se sto fraintendendo.
    • Sembra che il .ix indicizzatore sarà obsoleto in Panda 0.20.0 panda-docs.github.io/panda-docs-travis/…
    • grazie per la deprecazione nota, voglio aggiornare la risposta riflettere su questo 🙂

Lascia un commento