[PYTHON] Parcourir .loc et .iloc en même temps dans pandas DataFrame

.ix est obsolète

C'est un .ix utile pour référencer un DataFrame pandas, mais si vous ne le comprenez pas, vous tomberez dans un piège.

Par exemple, supposons que vous ayez le DataFrame suivant.

from pandas import DataFrame

df = DataFrame(
    [['a0', 'b0'], ['a1', 'b1'], ['a2', 'b2']],
    index=[2, 4, 6],
    columns=['a', 'b'])
a b
2 a0 b0
4 a1 b1
6 a2 b2

Et si vous voulez faire référence à la deuxième (à partir de 0) ligne ʻa colonneici? Le résultat attendu est «a2». .ix` accepte à la fois l'ordre et l'index, donc si vous vous y référez comme ci-dessous ...

df.ix[2, 'a']

Le résultat sera «a0». Ceci est dû au fait que la référence à laquelle un numéro est attribué dans «.ix» va à l'index si l'index existe, et pour voir l'ordre s'il n'existe pas dans l'index.

Cette ambiguïté dans la référence .ix semble être obsolète dans la version 0.20 de pandas.

Pour faire référence à la commande et au nom de l'index en même temps

Ce n'est peut-être pas la meilleure solution, mais je vais essayer d'y faire référence par «.iloc». Cependant, comme cela ne peut être référencé que dans l'ordre, utilisez pandas.Index.get_loc ensemble. Il s'agit d'une méthode qui recherche les noms de lignes (ou les noms de colonnes) et renvoie l'ordre.

df.iloc[2, df.columns.get_loc('a')]

Le résultat attendu, ʻa2`, est maintenant renvoyé.

Dans l'exemple ci-dessus, le nom de la colonne est spécifié, mais lorsque vous spécifiez le nom de la ligne, procédez comme suit.

df.iloc[df.index.get_loc(6), 0]

Si vous connaissez à l'avance les noms des lignes et des colonnes, vous pouvez utiliser .loc normalement.

df.loc[6, 'a']

De même, .iloc convient si vous connaissez à l'avance l'ordre des lignes et des colonnes.

df.iloc[2, 0]

Résumé

Si vous ne comprenez pas le comportement de .ix, il se comportera involontairement. Même si vous comprenez le comportement, vous devez connaître le contenu de l'index, il semble donc préférable d'éviter d'utiliser .ix autant que possible.

Recommended Posts

Parcourir .loc et .iloc en même temps dans pandas DataFrame
Boucle les variables en même temps dans le modèle
Visualisez les données et saisissez la corrélation en même temps
Conversion de type de plusieurs colonnes de pandas DataFrame avec un type en même temps
Y a-t-il NaN dans le DataFrame pandas?
Tracez plusieurs cartes et données en même temps avec matplotlib de Python
Je veux créer un lecteur de musique et enregistrer de la musique en même temps
Transformez plusieurs listes avec l'instruction for en même temps en Python
Vérifiez si la colonne attendue existe dans Pandas DataFrame
J'ai essayé la même analyse de données avec kaggle notebook (python) et PowerBI en même temps ②
Fonction intégrée Python ~ divmod ~ Obtenons le quotient et le reste de la division en même temps
Calculez le décalage horaire entre deux colonnes avec Pandas DataFrame
[Pandas] Si les données de la première ligne sont dans l'en-tête de DataFrame
Combinez des listes dans un DataFrame avec des pandas
J'ai essayé d'illustrer le temps et le temps du langage C
[Python] Afficher le temps écoulé en heures, minutes et secondes (00:00:00)
Obtenez la date et l'heure actuelles en Python, en tenant compte du décalage horaire
[Python] Forces et faiblesses de DataFrame en termes de temps requis
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
python Remarque: enumerate () -Obtenir l'index et l'élément de la liste en même temps et tourner pour l'instruction
Déterminez le format de la date et de l'heure avec Python et convertissez-le en Unixtime
[Python 3.8 ~] Réécrire des tableaux etc. en même temps que la définition [astuces]
[Python3] Enregistrez la matrice de moyenne et de covariance dans json avec les pandas
Vérifier le taux de compression et le temps de PIXZ utilisé en pratique
Comment afficher les octets de la même manière en Java et Python
Comptez le nombre de fois que deux valeurs apparaissent simultanément dans un élément de type itérateur Python 3
Comment lire des entrées standard ou des fichiers variables en même temps comme la commande coller en Python
Ignorer # ligne et lire avec les pandas
Comment obtenir la différence de date et d'heure en secondes avec Python
Obtenez et convertissez l'heure actuelle dans le fuseau horaire local du système avec python
Obtenez une instance datetime à tout moment de la journée en Python
Configurer un serveur qui traite plusieurs connexions en même temps
[Python] Comment ouvrir deux fichiers ou plus en même temps