Skip to content

Vous pouvez sรฉlectionner et obtenir des lignes, des colonnes et des รฉlรฉments dans ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ par index (numรฉros et noms) en utilisant [] (crochets).

Contenu

Vous pouvez utiliser ๐šโ€Œ๐ญโ€Œ , ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ , ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ pour sรฉlectionner une plage de maniรจre plus explicite. Il est รฉgalement possible de sรฉlectionner des colonnes par tranche et des lignes par nom/numรฉro de ligne ou une liste de celles-ci.

Utilisez ๐ฌโ€Œ๐žโ€Œ๐ญโ€Œ_๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ() pour affecter une colonne ร  ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ .

L’exemple de code de cet article est basรฉ sur la version 2.0.3 de pandas . Le code D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ suivant est utilisรฉ comme exemple.

import pandas as pd print(pd.__version__) # 2.0.3 df = pd.DataFrame({'col_0': ['00', '10', '20', '30', '40'], 'col_1': ['01', '11', '21', '31', '41'], 'col_2': ['02', '12', '22', '32', '42'], 'col_3': ['03', '13', '23', '33', '43']}, index=['row_0', 'row_1', 'row_2', 'row_3', 'row_4']) print(df) # col_0 col_1 col_2 col_3 # row_0 00 01 02 03 # row_1 10 11 12 13 # row_2 20 21 22 23 # row_3 30 31 32 33 # row_4 40 41 42 43 

Sรฉlectionnez les colonnes par numรฉros/noms de colonnes en utilisant []

[C๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ ๐งโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ] : Obtenir une seule colonne sous la forme ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

Vous pouvez obtenir la colonne sous la forme S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ en spรฉcifiant le nom de la colonne entre [] .

print(df['col_2']) print(type(df['col_2'])) # row_0 02 # row_1 12 # row_2 22 # row_3 32 # row_4 42 # Name: col_2, dtype: object # <class 'pandas.core.series.Series'> 

Vous pouvez รฉgalement dรฉfinir un nom de colonne tel que . Notez que si le nom de la colonne est en conflit avec les noms de mรฉthodes existantes, la mรฉthode a la prioritรฉ.

print(df.col_2) # row_0 02 # row_1 12 # row_2 22 # row_3 32 # row_4 42 # Name: col_2, dtype: object 

[L๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ ๐จโ€Œ๐Ÿโ€Œ ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ ๐งโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ๐ฌโ€Œ] : Obtenir une ou plusieurs colonnes sous la forme ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ

Vous pouvez obtenir plusieurs colonnes sous la forme D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ en spรฉcifiant une liste de noms de colonnes entre [] . Les colonnes seront dans lโ€™ordre de la liste spรฉcifiรฉe.

print(df[['col_2', 'col_0']]) print(type(df[['col_2', 'col_0']])) # col_2 col_0 # row_0 02 00 # row_1 12 10 # row_2 22 20 # row_3 32 30 # row_4 42 40 # <class 'pandas.core.frame.DataFrame'> 

Si vous spรฉcifiez une liste avec un seul รฉlรฉment, un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ร  une seule colonne est renvoyรฉ, et non un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ .

print(df[['col_2']]) print(type(df[['col_2']])) # col_2 # row_0 02 # row_1 12 # row_2 22 # row_3 32 # row_4 42 # <class 'pandas.core.frame.DataFrame'> 

๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ

Vous pouvez รฉgalement utiliser ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ pour dรฉfinir une tranche en fonction des noms de colonnes et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ pour sรฉlectionner des colonnes en fonction de leurs numรฉros, soit individuellement, soit sous forme de plage (liste ou tranche).

print(df.loc[:, 'col_1':'col_3']) # col_1 col_2 col_3 # row_0 01 02 03 # row_1 11 12 13 # row_2 21 22 23 # row_3 31 32 33 # row_4 41 42 43 print(df.iloc[:, 2]) # row_0 02 # row_1 12 # row_2 22 # row_3 32 # row_4 42 # Name: col_2, dtype: object 

Sรฉlectionnez les lignes par numรฉros/noms de lignes en utilisant []

[S๐ฅโ€Œ๐ขโ€Œ๐œโ€Œ๐žโ€Œ ๐จโ€Œ๐Ÿโ€Œ ๐ซโ€Œ๐จโ€Œ๐ฐโ€Œ ๐งโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐›โ€Œ๐žโ€Œ๐ซโ€Œ/๐งโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ] : Obtenir une ou plusieurs lignes sous la forme ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ

Vous pouvez obtenir plusieurs lignes sous forme de D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ en spรฉcifiant une tranche entre [] .

print(df[1:4]) print(type(df[1:4])) # col_0 col_1 col_2 col_3 # row_1 10 11 12 13 # row_2 20 21 22 23 # row_3 30 31 32 33 # <class 'pandas.core.frame.DataFrame'> 

Vous pouvez dรฉfinir une valeur nรฉgative et ๐ฌโ€Œ๐ญโ€Œ๐žโ€Œ๐ฉโ€Œ ( ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐ซโ€Œ๐ญโ€Œ:๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ:๐ฌโ€Œ๐ญโ€Œ๐žโ€Œ๐ฉโ€Œ ) comme dans une tranche normale. Par exemple, vous pouvez utiliser des tranches pour extraire des lignes paires ou impaires.

print(df[:-3]) # col_0 col_1 col_2 col_3 # row_0 00 01 02 03 # row_1 10 11 12 13 print(df[::2]) # col_0 col_1 col_2 col_3 # row_0 00 01 02 03 # row_2 20 21 22 23 # row_4 40 41 42 43 print(df[1::2]) # col_0 col_1 col_2 col_3 # row_1 10 11 12 13 # row_3 30 31 32 33 

Une erreur est gรฉnรฉrรฉe si un numรฉro de ligne est spรฉcifiรฉ seul au lieu d’une tranche.

# print(df[1]) # KeyError: 1 

Si une seule ligne est sรฉlectionnรฉe, un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ sur une seule ligne est renvoyรฉ, et non un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ .

print(df[1:2]) print(type(df[1:2])) # col_0 col_1 col_2 col_3 # row_1 10 11 12 13 # <class 'pandas.core.frame.DataFrame'> 

Vous pouvez รฉgalement crรฉer une tranche de nom de ligne au lieu d’un numรฉro de ligne. Dans le cas d’une tranche avec un nom de ligne, la ligne ๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ est incluse.

print(df['row_1':'row_3']) # col_0 col_1 col_2 col_3 # row_1 10 11 12 13 # row_2 20 21 22 23 # row_3 30 31 32 33 

๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ

Vous pouvez รฉgalement utiliser ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ pour sรฉlectionner des lignes par leur nom et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ pour sรฉlectionner des lignes par leur numรฉro, soit individuellement, soit dans une liste. Consultez l’article suivant pour plus de dรฉtails.

print(df.loc[['row_1', 'row_3']]) # col_0 col_1 col_2 col_3 # row_1 10 11 12 13 # row_3 30 31 32 33 print(df.iloc[1]) # col_0 10 # col_1 11 # col_2 12 # col_3 13 # Name: row_1, dtype: object 

[B๐จโ€Œ๐จโ€Œ๐ฅโ€Œ๐žโ€Œ๐šโ€Œ๐งโ€Œ ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ/S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ] : Obtenir les lignes T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ sous forme de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ

En spรฉcifiant un tableau boolรฉen ( ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ ou ๐งโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ฒโ€Œ.๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ) dans [] , vous pouvez extraire les lignes T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ sous la forme D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

l_bool = [True, False, False, True, True] print(df[l_bool]) print(type(df[l_bool])) # col_0 col_1 col_2 col_3 # row_0 00 01 02 03 # row_3 30 31 32 33 # row_4 40 41 42 43 # <class 'pandas.core.frame.DataFrame'> 

S’il n’y a qu’un seul T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ , un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ sur une seule ligne est renvoyรฉ, et non un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ .

l_bool = [True, False, False, False, False] print(df[l_bool]) print(type(df[l_bool])) # col_0 col_1 col_2 col_3 # row_0 00 01 02 03 # <class 'pandas.core.frame.DataFrame'> 

Une erreur est gรฉnรฉrรฉe si le nombre d’รฉlรฉments ne correspond pas.

# print(df[[True, False, False]]) # ValueError: Item wrong length 3 instead of 5. 

Vous pouvez รฉgalement indiquer la valeur boolรฉenne S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ . Les lignes sont extraites en fonction des รฉtiquettes, et non de l’ordre.

s_bool = pd.Series([True, False, False, True, True], index=reversed(df.index)) print(s_bool) # row_4 True # row_3 False # row_2 False # row_1 True # row_0 True # dtype: bool print(df[s_bool]) # col_0 col_1 col_2 col_3 # row_0 00 01 02 03 # row_1 10 11 12 13 # row_4 40 41 42 43 

Une erreur est gรฉnรฉrรฉe si le nombre d’รฉlรฉments ou d’รฉtiquettes ne correspond pas.

s_bool_wrong = pd.Series([True, False, False, True, True], index=['A', 'B', 'C', 'D', 'E']) # print(df[s_bool_wrong]) # IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match). 

ร€ l’aide d’une valeur boolรฉenne S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , vous pouvez sรฉlectionner des lignes selon les conditions. Reportez-vous ร  l’article suivant pour plus de dรฉtails.

Sรฉlectionnez les รฉlรฉments de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ par numรฉros/noms

Considรฉrez l’exemple suivant de S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ .

s = df['col_0'] print(s) # row_0 00 # row_1 10 # row_2 20 # row_3 30 # row_4 40 # Name: col_0, dtype: object 

[N๐ฎโ€Œ๐ฆโ€Œ๐›โ€Œ๐žโ€Œ๐ซโ€Œ/๐งโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ] : Obtenir la valeur d’un seul รฉlรฉment

Vous pouvez obtenir la valeur de l’รฉlรฉment en spรฉcifiant les numรฉros (positions) ou les noms (รฉtiquettes).

print(s[3]) print(type(s[3])) # 30 # <class 'str'> 

Lors de la spรฉcification par numรฉro, vous pouvez utiliser une valeur nรฉgative pour indiquer la position ร  partir de la fin. -1 reprรฉsente le dernier รฉlรฉment.

Vous pouvez รฉgalement dรฉfinir le nom comme .<๐งโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ> . Notez que si le nom entre en conflit avec les noms de mรฉthodes existants, la mรฉthode a la prioritรฉ.

print(s[-1]) # 40 print(s['row_0']) # 00 print(s.row_0) # 00 

[L๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ ๐จโ€Œ๐Ÿโ€Œ ๐งโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐›โ€Œ๐žโ€Œ๐ซโ€Œ๐ฌโ€Œ/๐งโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ๐ฌโ€Œ] : Obtenir un ou plusieurs รฉlรฉments sous la forme ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

Vous pouvez sรฉlectionner plusieurs valeurs comme S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ en spรฉcifiant une liste de nombres/noms. Les รฉlรฉments seront dans lโ€™ordre de la liste spรฉcifiรฉ. Si une liste avec un seul รฉlรฉment est spรฉcifiรฉe, un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ร  un seul รฉlรฉment est renvoyรฉ.

print(s[[3, 1]]) print(type(s[[3, 1]])) # row_3 30 # row_1 10 # Name: col_0, dtype: object # <class 'pandas.core.series.Series'> print(s[[1]]) print(type(s[[1]])) # row_1 10 # Name: col_0, dtype: object # <class 'pandas.core.series.Series'> 

Vous pouvez dรฉfinir une liste de noms.

print(s[['row_3', 'row_1']]) # row_3 30 # row_1 10 # Name: col_0, dtype: object print(s[['row_1']]) # row_1 10 # Name: col_0, dtype: object 

[S๐ฅโ€Œ๐ขโ€Œ๐œโ€Œ๐žโ€Œ ๐จโ€Œ๐Ÿโ€Œ ๐งโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐›โ€Œ๐žโ€Œ๐ซโ€Œ๐ฌโ€Œ/๐งโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ๐ฌโ€Œ] : Obtenir un ou plusieurs รฉlรฉments sous la forme ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

Vous pouvez รฉgalement sรฉlectionner plusieurs valeurs comme S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ en spรฉcifiant une tranche de nombres/noms. Si un seul รฉlรฉment est sรฉlectionnรฉ, un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ร  un seul รฉlรฉment est renvoyรฉ.

print(s[1:3]) print(type(s[1:3])) # row_1 10 # row_2 20 # Name: col_0, dtype: object # <class 'pandas.core.series.Series'> print(s[1:2]) print(type(s[1:2])) # row_1 10 # Name: col_0, dtype: object # <class 'pandas.core.series.Series'> 

Dans le cas de tranches de nom, l’รฉlรฉment ๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ de ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐ซโ€Œ๐ญโ€Œ:๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ est รฉgalement inclus.

print(s['row_1':'row_3']) # row_1 10 # row_2 20 # row_3 30 # Name: col_0, dtype: object print(s['row_1':'row_1']) # row_1 10 # Name: col_0, dtype: object 

[B๐จโ€Œ๐จโ€Œ๐ฅโ€Œ๐žโ€Œ๐šโ€Œ๐งโ€Œ ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ/S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ] : Obtenir les รฉlรฉments T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ sous forme de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

En spรฉcifiant un tableau boolรฉen ( ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ ou ๐งโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ฒโ€Œ.๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ) dans [] , vous pouvez extraire les รฉlรฉments T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ sous forme de S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ .

l_bool = [True, False, False, True, True] print(s[l_bool]) print(type(s[l_bool])) # row_0 00 # row_3 30 # row_4 40 # Name: col_0, dtype: object # <class 'pandas.core.series.Series'> 

S’il n’y a qu’un seul T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ , un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ร  un seul รฉlรฉment est renvoyรฉ.

l_bool = [True, False, False, False, False] print(s[l_bool]) print(type(s[l_bool])) # row_0 00 # Name: col_0, dtype: object # <class 'pandas.core.series.Series'> 

Une erreur est gรฉnรฉrรฉe si le nombre d’รฉlรฉments ne correspond pas.

# print(s[[True, False, False]]) # IndexError: Boolean index has wrong length: 3 instead of 5 

Vous pouvez รฉgalement indiquer la valeur boolรฉenne S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ . Les รฉlรฉments sont extraits en fonction des รฉtiquettes, et non de l’ordre.

s_bool = pd.Series(l_bool, index=reversed(df.index)) print(s_bool) # row_4 True # row_3 False # row_2 False # row_1 False # row_0 False # dtype: bool print(s[s_bool]) # row_4 40 # Name: col_0, dtype: object 

Une erreur est gรฉnรฉrรฉe si le nombre d’รฉlรฉments ou d’รฉtiquettes ne correspond pas.

s_bool_wrong = pd.Series([True, False, False, True, True], index=['A', 'B', 'C', 'D', 'E']) # print(s[s_bool_wrong]) # IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match). 

Sรฉlectionnez les รฉlรฉments de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ

Vous pouvez obtenir la valeur d’un รฉlรฉment ร  partir d’un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ en extrayant d’abord un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ puis en rรฉcupรฉrant la valeur de ce S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ .

print(df['col_1']['row_2']) # 21 

Vous pouvez รฉgalement extraire n’importe quel groupe par tranches ou par listes.

print(df['row_1':'row_3'][['col_1', 'col_3']]) # col_1 col_3 # row_1 11 13 # row_2 21 23 # row_3 31 33 

Cependant, l’utilisation de cette approche ( […][…] ), connue sous le nom d’indexation chaรฎnรฉe, peut dรฉclencher un S๐žโ€Œ๐ญโ€Œ๐ญโ€Œ๐ขโ€Œ๐งโ€Œ๐ โ€ŒW๐ขโ€Œ๐ญโ€Œ๐กโ€Œ C๐จโ€Œ๐ฉโ€Œ๐ฒโ€ŒW๐šโ€Œ๐ซโ€Œ๐งโ€Œ๐ขโ€Œ๐งโ€Œ๐ โ€Œ lorsque vous attribuez des valeurs.

Vous pouvez sรฉlectionner des lignes ou des colonnes ร  la fois avec ๐šโ€Œ๐ญโ€Œ , ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ , ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ ou ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ .

print(df.at['row_2', 'col_1']) # 21 print(df.loc['row_1':'row_3', ['col_1', 'col_3']]) # col_1 col_3 # row_1 11 13 # row_2 21 23 # row_3 31 33 

Attention lorsque les noms de lignes et de colonnes sont des entiers

Soyez prudent lorsque les noms de lignes et de colonnes sont des entiers.

Considรฉrez l’exemple suivant : D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

df = pd.DataFrame([[0, 10, 20], [30, 40, 50], [60, 70, 80]], index=[2, 0, 1], columns=[1, 2, 0]) print(df) # 1 2 0 # 2 0 10 20 # 0 30 40 50 # 1 60 70 80 

Si vous utilisez un [๐ฌโ€Œ๐œโ€Œ๐šโ€Œ๐ฅโ€Œ๐šโ€Œ๐ซโ€Œ ๐ฏโ€Œ๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€Œ] ou [๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ] , la valeur exprimรฉe est interprรฉtรฉe comme un nom de colonne.

print(df[0]) # 2 20 # 0 50 # 1 80 # Name: 0, dtype: int64 print(df[[0, 2]]) # 0 2 # 2 20 10 # 0 50 40 # 1 80 70 

Si [๐ฌโ€Œ๐ฅโ€Œ๐ขโ€Œ๐œโ€Œ๐žโ€Œ] , la valeur spรฉcifiรฉe est considรฉrรฉe comme un numรฉro de ligne et non comme un nom de ligne. Les valeurs nรฉgatives sont รฉgalement autorisรฉes.

print(df[:2]) # 1 2 0 # 2 0 10 20 # 0 30 40 50 print(df[-2:]) # 1 2 0 # 0 30 40 50 # 1 60 70 80 

Utilisez ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ ou ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ pour indiquer clairement s’il s’agit d’un nom (รฉtiquette) ou d’un numรฉro (position). Dans le cas de ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , l’รฉlรฉment ๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ de ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐ซโ€Œ๐ญโ€Œ:๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ est รฉgalement inclus.

print(df.loc[:2]) # 1 2 0 # 2 0 10 20 print(df.iloc[:2]) # 1 2 0 # 2 0 10 20 # 0 30 40 50 

Versez S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ :

s = df[2] print(s) # 2 10 # 0 40 # 1 70 # Name: 2, dtype: int64 

Dans S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , la valeur spรฉcifiรฉe est considรฉrรฉe comme un nom et non un nombre.

print(s[0]) # 40 

Utilisez ๐šโ€Œ๐ญโ€Œ ou ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ pour indiquer clairement s’il s’agit d’un nom ou d’un numรฉro.

print(s.at[0]) # 40 print(s.iat[0]) # 10 

Notez que la spรฉcification de [-1] est considรฉrรฉe comme faisant rรฉfรฉrence ร  une รฉtiquette nommรฉe -1 , et non au dernier รฉlรฉment. Vous pouvez utiliser ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ .

# print(s[-1]) # KeyError: -1 print(s.iat[-1]) # 70 

Il est donc prรฉfรฉrable d’utiliser ๐šโ€Œ๐ญโ€Œ , ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ , ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ ou ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ lorsque le nom de la ligne ou de la colonne est un entier.