Pandas: Pourquoi les doubles crochets sont-ils nécessaires pour sélectionner la colonne après l'indexation booléenne
Pour un df tableau comme ci-dessous,
A B C D
0 0 1 1 1
1 2 3 5 7
3 3 1 2 8
pourquoi les deux crochets nécessaires pour la sélection des colonnes spécifiques après boolean d'indexation?
the [['A','C']] part of
df[df['A'] < 3][['A','C']]
source d'informationauteur FortuneFaded
Vous devez vous connecter pour publier un commentaire.
Pour les pandas objets (Série, DataFrame), l'opérateur d'indexation [] accepte uniquement
colname
ou de la liste de colnames pour sélectionner la colonne(s)Pour
df[[colname(s)]]
l'intérieur des parenthèses sont pour la liste, et à l'extérieur des crochets sont de l'indexation de l'opérateur, c'est à dire que vous devez utiliser des doubles crochets si vous sélectionnez deux ou plusieurs colonnes. Avec un nom de colonne, une seule paire de parenthèses renvoie une Série, tandis que les deux crochets de retour d'un dataframe.Aussi,
df.ix[df['A'] < 3,['A','C']]
oudf.loc[df['A'] < 3,['A','C']]
est mieux que l'enchaînement de sélection pour éviter le retour d'une copie et d'une vue sur le dataframe.Veuillez vous référer les pandas de la documentation pour plus de détails
Parce que vous n'avez pas de colonnes nommées
'A','C'
qui est ce que vous seriez en essayant de faire ce qui va soulever unKeyError
donc vous devez utiliser un objet iterable à la sous-sélectionnez à partir de la df.Donc
soulève
Qui est différent de
Ce n'est pas différent d'essayer:
donc pourquoi vous avez besoin de double crochets:
Noter que la façon moderne est d'utiliser
.ix
:De sorte que vous êtes d'exploitation sur une vue plutôt que potentiellement une copie
Parce que les parenthèses sont juste la syntaxe de python (littérale) de la liste.
L'extérieur entre crochets sont de l'indexeur opération de pandas dataframe objet.
Dans ce cas d'utilisation intérieure
['A', 'B']
définit la liste des colonnes à passer comme unique argument à l'indexeur de l'opération, qui est dénoté par l'extérieur des parenthèses.