Indexation d'une base de données pandas par entier
Je n'arrive pas à trouver un moyen élégant pour index un pandas.DataFrame
par un index entier.
Dans l'exemple suivant, je veux obtenir la valeur de 'a' à partir du premier élément de la 'A'
colonne.
import pandas
df = pandas.DataFrame(
{'A':['a','b', 'c'], 'B':['f', 'g', 'h']},
index=[10,20,30]
)
Je m'attends à ce df['A'].ix[0]
et df['A'][10]
à la fois pour revenir 'a'
.
Le df['A'][10]
ne retour 'a'
, mais df['A'].ix[0]
jette un KeyError: 0
. La seule façon que je pouvais penser pour obtenir la valeur 'a'
en fonction de l'indice 0 est d'utiliser l'approche suivante.
df['A'][df['A'].index[0]]
Est-il une façon plus simple d'obtenir 'a'
de la dataframe, à l'aide de l'indice 0?
Mise à jour
Comme des pandas 0.11 il y a une autre façon de index en entier.
df.iloc[0] # integer based, gives the first row
df.loc[10] # label based, gives the row with label 10
Ce remplace la irow
approche .
source d'informationauteur SiggyF
Vous devez vous connecter pour publier un commentaire.
Vous obtenez une erreur avec
df['A'].ix[0]
parce que votre indexation ne commence pas à 0, elle commence à 10. Vous pouvez obtenir la valeur que vous voulez avec l'une des opérations suivantesL'utilise d'abord par le bon indice. La deuxième commande, ce qui je pense est ce que vous voulez, trouve la valeur par le numéro de ligne, plutôt que par la valeur de l'index, et est techniquement seulement deux caractères de plus que si
df['A'].ix[0]
travaillé.Alternativement, vous pouvez réinitialiser les indices de sorte qu'ils vont réagir de la manière que vous attendez pour
df['A'].ix[0]
:Cela permettra de préserver votre ancien indices (10, 20, etc.) en les déplaçant dans une colonne appelée "index" dans le df2 bloc de données. Puis
df2['A'].ix[0]
sera de retour 'a'. Si vous souhaitez supprimer l'ancien 10 indices, vous pouvez insérer le drapeaudrop=True
dans la parenthèse de la reset_index fonction.Dans de nouveaux pandas version u peut également utiliser df["A"].iat(0).