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 ๐ฅโ๐จโ๐โ() .
- pandas.DataFrame.loc โ documentation de pandas 2.0.3
- pandas.DataFrame.iloc โ documentation de pandas 2.0.3
- pandas.DataFrame.at โ documentation de pandas 2.0.3
- pandas.DataFrame.iat โ documentation de pandas 2.0.3
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
- ๐โ๐ญโ , ๐ขโ๐โ๐ญโ : Accรฉder et obtenir/dรฉfinir une valeur unique
- ๐ฅโ๐จโ๐โ , ๐ขโ๐ฅโ๐จโ๐โ : Accรฉder et obtenir/dรฉfinir des valeurs uniques ou multiples
- Noms de lignes/colonnes dupliquรฉs
- Prรฉciser par numรฉro et nom
- Conversion de type implicite lors de la sรฉlection d’une ligne comme ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ
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
