Skip to content

Vous pouvez utiliser ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , ๐šโ€Œ๐ญโ€Œ et ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ pour accรฉder aux donnรฉes dans ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et obtenir/dรฉfinir des valeurs. Utilisez des crochets [] comme dans ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ[] , et non des parenthรจses () comme dans ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ() .

Les diffรฉrences sont les suivantes :

  • Comment prรฉciser la position
    • ๐šโ€Œ๐ญโ€Œ , ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ : Nom de ligne/colonne (รฉtiquette)
    • ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ , ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ : Numรฉro de ligne/colonne
  • Donnรฉes que vous pouvez obtenir/dรฉfinir
    • ๐šโ€Œ๐ญโ€Œ , ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ : Valeur unique
    • ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ : Valeurs uniques ou multiples

Vous pouvez รฉgalement sรฉlectionner des lignes et des colonnes de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et des รฉlรฉments de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ en indexant [] .

Notez que les fonctions ๐ โ€Œ๐žโ€Œ๐ญโ€Œ_๐ฏโ€Œ๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€Œ() et ๐ขโ€Œ๐ฑโ€Œ[] prรฉcรฉdemment fournies ont รฉtรฉ supprimรฉes dans la version 1.0 .

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 

๐šโ€Œ๐ญโ€Œ , ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ : Accรฉder et obtenir/dรฉfinir une valeur unique

Vous pouvez dรฉfinir le nom de la ligne/colonne dans ๐šโ€Œ๐ญโ€Œ . En plus d’obtenir des donnรฉes, vous pouvez รฉgalement dรฉfinir (attribuer) une nouvelle valeur.

print(df.at['row_1', 'col_2']) # 12 df.at['row_1', 'col_2'] = '0' print(df.at['row_1', 'col_2']) # 0 

Vous pouvez dรฉfinir le numรฉro de ligne/colonne (indexation basรฉe sur 0) dans ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ .

print(df.iat[1, 2]) # 0 df.iat[1, 2] = '12' print(df.iat[1, 2]) # 12 

๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ : Accรฉder et obtenir/dรฉfinir des valeurs uniques ou multiples

๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ peuvent accรฉder ร  des valeurs uniques et multiples ร  l’aide de listes ou de tranches. Vous pouvez utiliser des noms de ligne/colonne pour ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et des numรฉros de ligne/colonne pour ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ .

Accรฉder ร  une valeur unique

Vous pouvez accรฉder ร  une valeur unique avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ ainsi qu’avec ๐šโ€Œ๐ญโ€Œ et ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ . Cependant, ๐šโ€Œ๐ญโ€Œ et ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ sont plus rapides que ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ .

print(df.loc['row_1', 'col_2']) # 12 print(df.iloc[1, 2]) # 12 

En plus de rรฉcupรฉrer des donnรฉes, vous pouvez รฉgalement dรฉfinir une nouvelle valeur pour l’รฉlรฉment.

df.loc['row_1', 'col_2'] = '0' print(df.loc['row_1', 'col_2']) # 0 df.iloc[1, 2] = '12' print(df.iloc[1, 2]) # 12 

Accรฉder ร  plusieurs valeurs ร  l’aide de listes et de tranches

Avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , vous pouvez accรฉder ร  plusieurs valeurs en spรฉcifiant un groupe de donnรฉes avec une liste [๐šโ€Œ, ๐›โ€Œ, ๐œโ€Œ, …] et la tranche . .

Notez que dans la notation de tranche ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐ซโ€Œ๐ญโ€Œ:๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ:๐ฌโ€Œ๐ญโ€Œ๐žโ€Œ๐ฉโ€Œ , le ๐ฌโ€Œ๐ญโ€Œ๐žโ€Œ๐ฉโ€Œ est facultatif et peut รชtre omis. Pour une utilisation de base des tranches, consultez l’article suivant.

Lorsque vous utilisez la notation de tranche ๐ฌโ€Œ๐ญโ€Œ๐šโ€Œ๐ซโ€Œ๐ญโ€Œ:๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ:๐ฌโ€Œ๐ญโ€Œ๐žโ€Œ๐ฉโ€Œ avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ (qui utilise les noms de ligne/colonne), la valeur ๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ est inclusive. Cependant, avec ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ (qui utilise des numรฉros de ligne/colonne), la valeur ๐ฌโ€Œ๐ญโ€Œ๐จโ€Œ๐ฉโ€Œ est exclusive, suivant le comportement typique des tranches Python standard.

Lorsqu’elles sont spรฉcifiรฉes par une liste, les lignes et les colonnes suivent l’ordre de cette liste.

print(df.loc['row_1':'row_3', ['col_2', 'col_0']]) # col_2 col_0 # row_1 12 10 # row_2 22 20 # row_3 32 30 print(df.iloc[1:3, [2, 0]]) # col_2 col_0 # row_1 12 10 # row_2 22 20 

Par exemple, vous pouvez extraire les lignes paires/impaires en spรฉcifiant ๐ฌโ€Œ๐ญโ€Œ๐žโ€Œ๐ฉโ€Œ .

print(df.iloc[::2, [0, 3]]) # col_0 col_3 # row_0 00 03 # row_2 20 23 # row_4 40 43 print(df.iloc[1::2, [0, 3]]) # col_0 col_3 # row_1 10 13 # row_3 30 33 

Vous pouvez dรฉfinir plusieurs valeurs simultanรฉment. Si vous attribuez une valeur scalaire, tous les รฉlรฉments sรฉlectionnรฉs seront dรฉfinis sur cette valeur. Pour attribuer des valeurs ร  une plage, utilisez une liste bidimensionnelle (liste de listes) ou un tableau NumPy bidimensionnel ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ).

df.iloc[1:3, [2, 0]] = '0' print(df) # col_0 col_1 col_2 col_3 # row_0 00 01 02 03 # row_1 0 11 0 13 # row_2 0 21 0 23 # row_3 30 31 32 33 # row_4 40 41 42 43 df.iloc[1:3, [2, 0]] = [['12', '10'], ['22', '20']] 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 

Notez que la sรฉlection d’une ligne ou d’une colonne en la spรฉcifiant comme valeur scalaire renvoie S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , tandis que la mรชme ligne ou colonne, prรฉcise comme une tranche ou une liste, renvoie D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

Soyez particuliรจrement attentif aux conversions de type implicites potentielles lors de la rรฉcupรฉration de lignes sous forme de S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ . Voir ci-dessous pour plus de dรฉtails.

print(df.loc['row_1', ['col_0', 'col_2']]) print(type(df.loc['row_1', ['col_0', 'col_2']])) # col_0 10 # col_2 12 # Name: row_1, dtype: object # <class 'pandas.core.series.Series'> print(df.loc['row_1':'row_1', ['col_0', 'col_2']]) print(type(df.loc['row_1':'row_1', ['col_0', 'col_2']])) # col_0 col_2 # row_1 10 12 # <class 'pandas.core.frame.DataFrame'> print(df.loc[['row_1'], ['col_0', 'col_2']]) print(type(df.loc[['row_1'], ['col_0', 'col_2']])) # col_0 col_2 # row_1 10 12 # <class 'pandas.core.frame.DataFrame'> 

Accรฉder aux lignes et aux colonnes

Vous pouvez sรฉlectionner des lignes et des colonnes avec ๐โ€Œ๐Ÿโ€Œ[] . Elles peuvent รชtre spรฉcifiรฉes comme suit :

  • Lignes : tranche du nom/numรฉro de ligne
  • Colonnes : nom de colonne ou liste de noms de colonnes

Pour plus d’informations, consultez l’article suivant.

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 print(df[1:3]) # col_0 col_1 col_2 col_3 # row_1 10 11 12 13 # row_2 20 21 22 23 print(df['col_1']) # row_0 01 # row_1 11 # row_2 21 # row_3 31 # row_4 41 # Name: col_1, dtype: object print(df[['col_1', 'col_3']]) # col_1 col_3 # row_0 01 03 # row_1 11 13 # row_2 21 23 # row_3 31 33 # row_4 41 43 

Vous pouvez dรฉfinir des lignes et des colonnes de diffรฉrentes maniรจres avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ .

Si vous omettez de prรฉciser des colonnes avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ ou ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , les lignes sont sรฉlectionnรฉes. Vous pouvez les indiquer par nom/numรฉro de ligne ou par liste de ces noms/numรฉros.

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

Vous pouvez sรฉlectionner des colonnes avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ en spรฉcifiant les lignes comme : . Il est possible d’รฉtablir par tranche.

print(df.loc[:, 'col_1':]) # 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 

Comme mentionnรฉ ci-dessus, la spรฉcification d’une seule ligne ou colonne avec une valeur scalaire renvoie un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , tandis que l’utilisation d’une tranche ou d’une liste renvoie un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

Notez que la sรฉlection d’une ligne comme ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ peut entraรฎner une conversion de type implicite. Voir ci-dessous pour plus de dรฉtails.

print(df.loc['row_2']) print(type(df.loc['row_2'])) # col_0 20 # col_1 21 # col_2 22 # col_3 23 # Name: row_2, dtype: object # <class 'pandas.core.series.Series'> print(df.loc['row_2':'row_2']) print(type(df.loc['row_2':'row_2'])) # col_0 col_1 col_2 col_3 # row_2 20 21 22 23 # <class 'pandas.core.frame.DataFrame'> print(df.loc[['row_2']]) print(type(df.loc[['row_2']])) # col_0 col_1 col_2 col_3 # row_2 20 21 22 23 # <class 'pandas.core.frame.DataFrame'> 

Masque par tableau boolรฉen et ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

Avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , vous pouvez utiliser un tableau ou une liste boolรฉen pour filtrer les donnรฉes. Bien que l’exemple suivant illustre le filtrage des lignes, la mรชme approche peut รชtre appliquรฉe aux colonnes.

l_bool = [True, False, False, True, False] print(df.loc[l_bool, ['col_0', 'col_2']]) # col_0 col_2 # row_0 00 02 # row_3 30 32 print(df.iloc[l_bool, [0, 2]]) # col_0 col_2 # row_0 00 02 # row_3 30 32 

Si le nombre d’รฉlรฉments ne correspond pas, une erreur est gรฉnรฉrรฉe.

l_bool_wrong = [True, False, False] # print(df.loc[l_bool_wrong, ['col_0', 'col_2']]) # IndexError: Boolean index has wrong length: 3 instead of 5 

Vous pouvez รฉgalement utiliser une valeur boolรฉenne S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ pour le filtrage. Notez que le filtrage est basรฉ sur la correspondance des รฉtiquettes, et non sur l’ordre des donnรฉes.

s_bool = pd.Series([True, False, False, True, False], index=reversed(df.index)) print(s_bool) # row_4 True # row_3 False # row_2 False # row_1 True # row_0 False # dtype: bool print(df.loc[s_bool, ['col_0', 'col_2']]) # col_0 col_2 # row_1 10 12 # row_4 40 42 

Vous ne pouvez pas dรฉfinir S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ dans ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ .

# print(df.iloc[s_bool, [0, 2]]) # ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types 

Mรชme avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , une erreur est gรฉnรฉrรฉe si les รฉtiquettes ne correspondent pas.

s_bool_wrong = pd.Series([True, False, False], index=['row_0', 'row_1', 'row_2']) # print(df.loc[s_bool_wrong, ['col_0', 'col_2']]) # IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match). s_bool_wrong = pd.Series([True, False, False, True, False], index=['row_0', 'row_1', 'row_2', 'row_3', 'XXX']) # print(df.loc[s_bool_wrong, ['col_0', 'col_2']]) # IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match). 

Noms de lignes/colonnes dupliquรฉs

Les noms de ligne ( ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ ) et les noms de colonne ( ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ ) peuvent avoir des doublons.

Considรฉrez l’exemple suivant de D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ avec des noms de lignes et de colonnes en double.

df_duplicated = df.rename(columns={'col_2': 'col_1'}, index={'row_3': 'row_2'}) print(df_duplicated) # col_0 col_1 col_1 col_3 # row_0 00 01 02 03 # row_1 10 11 12 13 # row_2 20 21 22 23 # row_2 30 31 32 33 # row_4 40 41 42 43 

Pour ๐šโ€Œ๐ญโ€Œ et ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , la spรฉcification de noms en double sรฉlectionne les รฉlรฉments multiples correspondants.

print(df_duplicated.at['row_2', 'col_1']) print(type(df_duplicated.at['row_2', 'col_1'])) # col_1 col_1 # row_2 21 22 # row_2 31 32 # <class 'pandas.core.frame.DataFrame'> print(df_duplicated.loc[:'row_2', ['col_1', 'col_3']]) print(type(df_duplicated.loc[:'row_2', ['col_1', 'col_3']])) # col_1 col_1 col_3 # row_0 01 02 03 # row_1 11 12 13 # row_2 21 22 23 # row_2 31 32 33 # <class 'pandas.core.frame.DataFrame'> 

Lorsque vous utilisez ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ et ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ pour indiquer par numรฉro de ligne/colonne, les noms dupliquรฉs ne constituent pas un problรจme car ils fonctionnent en fonction de la position.

print(df_duplicated.iat[2, 1]) # 21 print(df_duplicated.iloc[:2, [1, 3]]) # col_1 col_3 # row_0 01 03 # row_1 11 13 

Pour รฉviter toute confusion, il est conseillรฉ d’utiliser des valeurs uniques pour les noms de lignes et de colonnes, sauf s’il existe une raison impรฉrieuse de procรฉder autrement.

Vous pouvez vรฉrifier si les noms de ligne et de colonne sont uniques (non dupliquรฉs) avec ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ.๐ขโ€Œ๐ฌโ€Œ_๐ฎโ€Œ๐งโ€Œ๐ขโ€Œ๐ชโ€Œ๐ฎโ€Œ๐žโ€Œ et .

print(df_duplicated.index.is_unique) # False print(df_duplicated.columns.is_unique) # False 

Consultez l’article suivant pour savoir comment renommer les noms de lignes et de colonnes.

Prรฉciser par numรฉro et nom

Si vous souhaitez dรฉfinir ร  la fois par numรฉro et par nom, utilisez ๐šโ€Œ๐ญโ€Œ ou ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ en combinaison avec les attributs ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ ou ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ .

Vous pouvez rรฉcupรฉrer les noms de lignes ou de colonnes en fonction de leur numรฉro ร  l’aide des attributs ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ .

print(df.index[2]) # row_2 print(df.columns[2]) # col_2 

Pour ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ , vous pouvez utiliser des tranches et des listes pour rรฉcupรฉrer plusieurs noms.

print(df.index[1:4]) # Index(['row_1', 'row_2', 'row_3'], dtype='object') print(df.columns[[1, 3]]) # Index(['col_1', 'col_3'], dtype='object') 

En utilisant ceci et ๐šโ€Œ๐ญโ€Œ ou ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , vous pouvez dรฉfinir par numรฉro et par nom.

print(df.at[df.index[2], 'col_2']) # 22 print(df.loc[['row_0', 'row_3'], df.columns[[1, 3]]]) # col_1 col_3 # row_0 01 03 # row_3 31 33 

L’utilisation d’opรฉrations d’indexation successives, telles que ๐โ€Œ๐Ÿโ€Œ[…][…] , ๐โ€Œ๐Ÿโ€Œ.๐ฅโ€Œ๐จโ€Œ๐œโ€Œ[…].๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ[…] et d’autres modรจles similaires, est connue sous le nom d’ยซ indexation en chaรฎne ยป. Cette approche peut dรฉclencher un S๐žโ€Œ๐ญโ€Œ๐ญโ€Œ๐ขโ€Œ๐งโ€Œ๐ โ€ŒW๐ขโ€Œ๐ญโ€Œ๐กโ€Œ C๐จโ€Œ๐ฉโ€Œ๐ฒโ€ŒW๐šโ€Œ๐ซโ€Œ๐งโ€Œ๐ขโ€Œ๐งโ€Œ๐ โ€Œ .

Bien que cette approche ne pose aucun problรจme lors de la rรฉcupรฉration et de la vรฉrification simples des donnรฉes, soyez prudent car l’attribution de nouvelles valeurs peut donner des rรฉsultats inattendus.

print(df['col_2'][2]) # 22 print(df.loc[['row_0', 'row_3']].iloc[:, [1, 3]]) # col_1 col_3 # row_0 01 03 # row_3 31 33 

Conversion de type implicite lors de la sรฉlection d’une ligne comme ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

Si les colonnes du D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ d’origine ont des types de donnรฉes diffรฉrents, alors lors de la sรฉlection d’une ligne en tant que S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ ou ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , le type de donnรฉes des รฉlรฉments du S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ sรฉlectionnรฉ peut diffรฉrer des types de donnรฉes de l’original D๐š๐ญ๐š๐ญ๐ž๐ง๐ญ๐ž๐ง๐ญ๐ž๐ง๐ญ๐ž .

Considรฉrons un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ avec des colonnes d’entiers ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ) et de nombres ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ).

df_mix = pd.DataFrame({'col_int': [0, 1, 2], 'col_float': [0.1, 0.2, 0.3]}, index=['A', 'B', 'C']) print(df_mix) # col_int col_float # A 0 0.1 # B 1 0.2 # C 2 0.3 print(df_mix.dtypes) # col_int int64 # col_float float64 # dtype: object 

Si vous rรฉcupรฉrez une ligne sous forme de S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ร  l’aide de ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ ou ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , son type de donnรฉes devient ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ . Les รฉlรฉments des colonnes ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ sont convertis en ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ .

print(df_mix.loc['B']) # col_int 1.0 # col_float 0.2 # Name: B, dtype: float64 print(type(df_mix.loc['B'])) # <class 'pandas.core.series.Series'> 

Si vous exรฉcutez le code suivant, l’รฉlรฉment est renvoyรฉ sous la forme ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ .

print(df_mix.loc['B']['col_int']) # 1.0 print(type(df_mix.loc['B']['col_int'])) # <class 'numpy.float64'> 

Vous pouvez obtenir des รฉlรฉments du type d’origine avec ๐šโ€Œ๐ญโ€Œ ou ๐ขโ€Œ๐šโ€Œ๐ญโ€Œ .

print(df_mix.at['B', 'col_int']) # 1 print(type(df_mix.at['B', 'col_int'])) # <class 'numpy.int64'> 

Lorsqu’une ligne est sรฉlectionnรฉe ร  l’aide d’une liste ou d’une tranche avec ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ ou ๐ขโ€Œ๐ฅโ€Œ๐จโ€Œ๐œโ€Œ , un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ est renvoyรฉ au lieu d’un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ .

print(df_mix.loc[['B']]) # col_int col_float # B 1 0.2 print(type(df_mix.loc[['B']])) # <class 'pandas.core.frame.DataFrame'> print(df_mix.loc[['B']].dtypes) # col_int int64 # col_float float64 # dtype: object