TL;DR : Il y a probablement une faute de frappe ou d'orthographe dans les noms d'en-tête de colonne.
Il s'agit d'une modification introduite dans v0.21.1
et a été expliqué dans le docs longuement -
Auparavant, la sélection avec une liste d'étiquettes, où une ou plusieurs étiquettes étaient manquantes, la sélection réussissait toujours, renvoyant NaN
pour les étiquettes manquantes. Cela montrera maintenant un FutureWarning
. A l'avenir, cela soulèvera un KeyError
( GH15747 ). Cet avertissement se déclenchera sur un DataFrame
ou un Series
pour avoir utilisé .loc[]
o [[]]
lors du passage d'une liste de labels avec at au moins une étiquette manquante.
Par exemple,
df
A B C
0 7.0 NaN 8
1 3.0 3.0 5
2 8.0 1.0 7
3 NaN 0.0 3
4 8.0 2.0 7
Essayez une sorte de découpage en tranches comme vous le faites -
df.loc[df.A.gt(6), ['A', 'C']]
A C
0 7.0 8
2 8.0 7
4 8.0 7
Aucun problème. Maintenant, essayez de remplacer C
avec une étiquette de colonne inexistante -
df.loc[df.A.gt(6), ['A', 'D']]
FutureWarning: Passing list-likes to .loc or [] with any missing label will raise
KeyError in the future, you can use .reindex() as an alternative.
A D
0 7.0 NaN
2 8.0 NaN
4 8.0 NaN
Donc, dans votre cas, l'erreur est due aux étiquettes de colonne que vous passez à loc
. Regardez-les à nouveau.
5 votes
Ce n'est pas une erreur, c'est une avertissement . Mais ce qu'il vous dit, c'est que l'une de vos étiquettes, probablement celle de votre colonne, n'est pas contenue dans le cadre de données. Le comportement actuel sera d'échouer silencieusement et de retourner une colonne avec
NaN
s. À l'avenir, il soulèvera une erreur à la place.0 votes
Merci, j'avais mal compris ce que signifiait index - et en quoi la réindexation était pertinente. Oui, j'ai juste fait une faute de frappe dans une de mes étiquettes.
1 votes
Oui, je suis d'accord que la partie sur
.reindex()
est déroutant. EDIT bien que cela ait un sens quand vous lisez ce