100 votes

Dans un Pandas DataFrame, quelle est la différence entre l'utilisation de crochets carrés ou d'un point pour caler une colonne?

c'est à dire:

 import pandas

d = {'col1': 2, 'col2': 2.5}
df = pandas.DataFrame(data=d, index=[0])

print(df['col2'])
print(df.col2)
 

La sortie est la même.

Cette réponse s'applique-t-elle à ce cas?

Quelle est la différence entre les notations entre crochets et points en Python?

93voto

Julien Marrec Points 6598

Le "pointillé", c'est à dire df.col2 est l' attribut d'accès qui est exposé comme une commodité.

Vous pouvez accéder à un index sur une Série de colonnes sur un DataFrame, et un article sur un Panneau directement comme un attribut:

df['col2'] le même: elle retourne un pd.Series de la colonne.

Quelques mises en garde sur l'attribut d'accès:

  • vous ne pouvez pas ajouter une colonne (df.new_col = x ne fonctionne pas, pire: il va silencieusement en fait créer un nouvel attribut plutôt que d'une colonne de penser singe brassage ici)
  • il ne fonctionnera pas si vous avez des espaces dans le nom de la colonne ou si le nom de colonne est un entier.

26voto

BrenBarn Points 63718

Ils sont de la même aussi longtemps que vous avez accès à une colonne unique avec un nom simple, mais vous pouvez faire plus avec le support de la notation. Vous ne pouvez utiliser qu' df.col si le nom de colonne est un Python valide identifiant (par exemple, ne contient pas d'espaces, et d'autres trucs). Aussi, vous risquez d'avoir des surprises si votre nom de colonne affrontements avec les pandas nom de la méthode (comme sum). Entre parenthèses, vous pouvez sélectionner plusieurs colonnes (par exemple, df[['col1', 'col2']]) ou ajouter une nouvelle colonne (df['newcol'] = ...), ce qui ne peut être fait avec point d'accès.

L'autre question que vous avez associé s'applique, mais qui est beaucoup plus question d'ordre général. Des objets Python obtenir de définir comment l' . et [] opérateurs s'appliquent à eux. Les Pandas DataFrames ont choisi de faire la même chose pour ce cas limité d'accéder à un simple colonnes, avec les mises en garde décrits ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X