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).
- Sรฉlectionnez les colonnes par numรฉros/noms de colonnes en utilisant []
- [C๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ ๐งโ๐โ๐ฆโ๐โ] : Obtenir une seule colonne sous la forme ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ
- [L๐ขโ๐ฌโ๐ญโ ๐จโ๐โ ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ ๐งโ๐โ๐ฆโ๐โ๐ฌโ] : Obtenir une ou plusieurs colonnes sous la forme ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ
- ๐ฅโ๐จโ๐โ et ๐ขโ๐ฅโ๐จโ๐โ
- Sรฉlectionnez les lignes par numรฉros/noms de lignes en utilisant []
- [S๐ฅโ๐ขโ๐โ๐โ ๐จโ๐โ ๐ซโ๐จโ๐ฐโ ๐งโ๐ฎโ๐ฆโ๐โ๐โ๐ซโ/๐งโ๐โ๐ฆโ๐โ] : Obtenir une ou plusieurs lignes sous la forme ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ
- ๐ฅโ๐จโ๐โ et ๐ขโ๐ฅโ๐จโ๐โ
- [B๐จโ๐จโ๐ฅโ๐โ๐โ๐งโ ๐โ๐ซโ๐ซโ๐โ๐ฒโ/S๐โ๐ซโ๐ขโ๐โ๐ฌโ] : Obtenir les lignes T๐ซโ๐ฎโ๐โ sous forme de ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ
- Select elements of ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ by numbers/names
- [N๐ฎโ๐ฆโ๐โ๐โ๐ซโ/๐งโ๐โ๐ฆโ๐โ]: Get the value of a single element
- [L๐ขโ๐ฌโ๐ญโ ๐จโ๐โ ๐งโ๐ฎโ๐ฆโ๐โ๐โ๐ซโ๐ฌโ/๐งโ๐โ๐ฆโ๐โ๐ฌโ]: Get single or multiple elements as ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ
- [S๐ฅโ๐ขโ๐โ๐โ ๐จโ๐โ ๐งโ๐ฎโ๐ฆโ๐โ๐โ๐ซโ๐ฌโ/๐งโ๐โ๐ฆโ๐โ๐ฌโ]: Get single or multiple elements as ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ
- [B๐จโ๐จโ๐ฅโ๐โ๐โ๐งโ ๐โ๐ซโ๐ซโ๐โ๐ฒโ/S๐โ๐ซโ๐ขโ๐โ๐ฌโ]: Get T๐ซโ๐ฎโ๐โ elements as ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ
- Select elements of ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ
- Caution when row and column names are integers
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.
