Skip to content

Cet article explique comment effectuer une conversion entre les listes pandas D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ / S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ et les listes intรฉgrรฉes Python.

Contenu

Bien que le terme ยซ convertir ยป soit utilisรฉ pour plus de simplicitรฉ, le processus implique en rรฉalitรฉ la crรฉation d’un nouvel objet d’un type diffรฉrent, tandis que l’objet d’origine reste inchangรฉ.

Pour les conversions entre D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ / S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ et les tableaux NumPy ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ), ainsi qu’entre D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , reportez-vous aux articles suivants.

La version de pandas utilisรฉe dans cet article est la suivante. Notez que les fonctionnalitรฉs peuvent varier selon les versions.

import pandas as pd print(pd.__version__) # 2.1.4 

Convertir les listes en D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

Convertir des listes en D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ en utilisant ๐ฉโ€Œ๐โ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ() et ๐ฉโ€Œ๐โ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ()

En spรฉcifiant une liste comme premier argument dans les constructeurs ๐ฉโ€Œ๐โ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ() ou ๐ฉโ€Œ๐โ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ() , un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ou D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ est gรฉnรฉrรฉ ร  partir de la liste.

l_1d = [0, 10, 20] print(pd.Series(l_1d)) # 0 0 # 1 10 # 2 20 # dtype: int64 l_2d = [[0, 10, 20], [30, 40, 50]] print(pd.DataFrame(l_2d)) # 0 1 2 # 0 0 10 20 # 1 30 40 50 

La spรฉcification d’une liste unidimensionnelle directement dans ๐ฉโ€Œ๐โ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ() crรฉe une liste D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ร  une seule colonne . Lorsqu’il est spรฉcifiรฉ comme [๐จโ€Œ๐งโ€Œ๐žโ€Œ_๐โ€Œ๐ขโ€Œ๐ฆโ€Œ๐žโ€Œ๐งโ€Œ๐ฌโ€Œ ๐ขโ€Œ๐จโ€Œ๐งโ€Œ๐šโ€Œ๐ฅโ€Œ_๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ] , il crรฉe un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ sur une seule ligne .

print(pd.DataFrame(l_1d)) # 0 # 0 0 # 1 10 # 2 20 print(pd.DataFrame([l_1d])) # 0 1 2 # 0 0 10 20 

Vous pouvez transposer une liste bidimensionnelle (liste de listes).

print(pd.DataFrame(zip(*l_2d))) # 0 1 # 0 0 30 # 1 10 40 # 2 20 50 

Spรฉcifiez les noms de ligne et de colonne : ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ , ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ

Les noms de lignes peuvent รชtre spรฉcifiรฉs avec l’argument ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et les noms de colonnes avec l’argument ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ .

print(pd.Series(l_1d, index=['X', 'Y', 'Z'])) # X 0 # Y 10 # Z 20 # dtype: int64 print(pd.DataFrame(l_2d, index=['X', 'Y'], columns=['A', 'B', 'C'])) # A B C # X 0 10 20 # Y 30 40 50 

Il est รฉgalement possible de dรฉfinir ou de modifier les ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ aprรจs avoir crรฉรฉ un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ou un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

Spรฉcifiez le type de donnรฉes : ๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ

Le type de donnรฉes ( ๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ ) de chaque colonne d’un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ , ainsi que celui d’un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , est automatiquement dรฉterminรฉ en fonction des valeurs de la liste.

Par exemple, si une colonne contient un mรฉlange d’entiers ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ) et de nombres ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ), le type de donnรฉes de la colonne devient ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ , et si elle contient un mรฉlange de nombres et de chaรฎnes, le type de donnรฉes devient ๐จโ€Œ๐›โ€Œ๐ฃโ€Œ๐žโ€Œ๐œโ€Œ๐ญโ€Œ .

l_2d_multi = [[0, 0.0, 'abc', 123, 'abc'], [10, 0.1, 'xyz', 1.23, 100]] print(pd.DataFrame(l_2d_multi)) # 0 1 2 3 4 # 0 0 0.0 abc 123.00 abc # 1 10 0.1 xyz 1.23 100 print(pd.DataFrame(l_2d_multi).dtypes) # 0 int64 # 1 float64 # 2 object # 3 float64 # 4 object # dtype: object 

Il est รฉgalement possible de prรฉciser le type de donnรฉes ร  l’aide de l’argument ๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ de ๐ฉโ€Œ๐โ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ() ou ๐ฉโ€Œ๐โ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ() .

print(pd.DataFrame(l_2d, dtype=float)) # 0 1 2 # 0 0.0 10.0 20.0 # 1 30.0 40.0 50.0 

Pour plus de dรฉtails sur les types de donnรฉes ( ๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ ) dans pandas, reportez-vous ร  l’article suivant.

Pour les listes contenant des รฉtiquettes

Pour crรฉer un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ร  partir d’une liste de paires รฉtiquette-valeur, dรฉcomposez d’abord la liste en ๐ฅโ€Œ๐šโ€Œ๐›โ€Œ๐žโ€Œ๐ฅโ€Œ๐ฌโ€Œ et ๐ฏโ€Œ๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€Œ๐ฌโ€Œ , puis transmettez-les ร  ๐ฉโ€Œ๐โ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ() .

l_1d_index = [['X', 0], ['Y', 1], ['Z', 2]] index, values = zip(*l_1d_index) print(index) # ('X', 'Y', 'Z') print(values) # (0, 1, 2) print(pd.Series(values, index=index)) # X 0 # Y 1 # Z 2 # dtype: int64 

Pour crรฉer un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ร  partir d’une liste qui inclut des รฉtiquettes et plusieurs valeurs, chargez d’abord la liste entiรจre dans le D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ , puis dรฉfini ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ ร  l’aide de la mรฉthode ๐ฌโ€Œ๐žโ€Œ๐ญโ€Œ_๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ() .

l_2d_index = [['X', 0, 0.0], ['Y', 1, 0.1], ['Z', 2, 0.2]] df_index = pd.DataFrame(l_2d_index, columns=['idx', 'A', 'B']) print(df_index) # idx A B # 0 X 0 0.0 # 1 Y 1 0.1 # 2 Z 2 0.2 print(df_index.set_index('idx')) # A B # idx  # X 0 0.0 # Y 1 0.1 # Z 2 0.2 

Si la liste d’origine inclut รฉgalement des noms de colonnes, utilisez la premiรจre ligne pour l’argument ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ et le reste des lignes (obtenues par dรฉcoupage) comme premier argument.

l_2d_index_columns = [['idx', 'A', 'B'], ['X', 0, 0.0], ['Y', 1, 0.1], ['Z', 2, 0.2]] df_index_columns = pd.DataFrame(l_2d_index_columns[1:], columns=l_2d_index_columns[0]) print(df_index_columns) # idx A B # 0 X 0 0.0 # 1 Y 1 0.1 # 2 Z 2 0.2 print(df_index_columns.set_index('idx')) # A B # idx  # X 0 0.0 # Y 1 0.1 # Z 2 0.2 

Convertir D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ en listes

Convertissez S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ en liste en utilisant ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() ou ๐ญโ€Œ๐จโ€Œ_๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ()

S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ peut รชtre converti en liste ร  l’aide des mรฉthodes ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() ou ๐ญโ€Œ๐จโ€Œ_๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() .

s = pd.Series([0, 10, 20]) print(s) # 0 0 # 1 10 # 2 20 # dtype: int64 print(s.tolist()) # [0, 10, 20] print(s.to_list()) # [0, 10, 20] 

Convertir D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ en liste en utilisant ๐ฏโ€Œ๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€Œ๐ฌโ€Œ et ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ()

ร€ partir de la version 2.1.4 de pandas, D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ ne dispose pas des mรฉthodes ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() ou ๐ญโ€Œ๐จโ€Œ_๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() . Pour convertir un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ en ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ , convertissez-le d’abord en un tableau NumPy ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ) en utilisant l’attribut ๐ฏโ€Œ๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€Œ๐ฌโ€Œ , puis utilisez l’attribut Mรฉthode ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() de ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ .

df = pd.DataFrame([[0, 10, 20], [30, 40, 50]]) print(df) # 0 1 2 # 0 0 10 20 # 1 30 40 50 print(df.values.tolist()) # [[0, 10, 20], [30, 40, 50]] 

Convertissez S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ et D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ en listes incluant ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ

Pour conserver le ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ dans la liste, utilisez la mรฉthode ๐ซโ€Œ๐žโ€Œ๐ฌโ€Œ๐žโ€Œ๐ญโ€Œ_๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ() pour rรฉinitialiser le ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et le transformer en colonne de donnรฉes.

s_index = pd.Series([0, 1, 2], index=['X', 'Y', 'Z']) print(s_index) # X 0 # Y 1 # Z 2 # dtype: int64 print(s_index.reset_index()) # index 0 # 0 X 0 # 1 Y 1 # 2 Z 2 print(s_index.reset_index().values.tolist()) # [['X', 0], ['Y', 1], ['Z', 2]] 

df_index = pd.DataFrame([[0, 1, 2], [3, 4, 5]], index=['A', 'B'], columns=['X', 'Y', 'Z']) print(df_index) # X Y Z # A 0 1 2 # B 3 4 5 print(df_index.reset_index()) # index X Y Z # 0 A 0 1 2 # 1 B 3 4 5 print(df_index.reset_index().values.tolist()) # [['A', 0, 1, 2], ['B', 3, 4, 5]] 

Depuis la version 2.1.4, D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ n’a aucune mรฉthode pour rรฉinitialiser ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ . Pour inclure ร  la fois ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ dans la liste, appliquez d’abord ๐ซโ€Œ๐žโ€Œ๐ฌโ€Œ๐žโ€Œ๐ญโ€Œ_๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ() , puis transposez en utilisant .T , appliquez ๐ซโ€Œ๐žโ€Œ๐ฌโ€Œ๐žโ€Œ๐ญโ€Œ_๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ() ร  nouveau, et finalement inverser la transposition avec .T . Une mรฉthode plus efficace existe peut-รชtre.

print(df_index.reset_index().T.reset_index().T.values.tolist()) # [['index', 'X', 'Y', 'Z'], ['A', 0, 1, 2], ['B', 3, 4, 5]] 

Convertir ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ en listes

L’attribut ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ de S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , ainsi que les attributs ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ de D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ , sont tous de type Ils peuvent รชtre convertis en listes ร  l’aide des mรฉthodes ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ ( ) ou ๐ญโ€Œ๐จโ€Œ_๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() .

s_index = pd.Series([0, 1, 2], index=['X', 'Y', 'Z']) print(s_index) # X 0 # Y 1 # Z 2 # dtype: int64 print(s_index.index) # Index(['X', 'Y', 'Z'], dtype='object') print(s_index.index.tolist()) # ['X', 'Y', 'Z'] 

df_index = pd.DataFrame([[0, 1, 2], [3, 4, 5]], index=['A', 'B'], columns=['X', 'Y', 'Z']) print(df_index) # X Y Z # A 0 1 2 # B 3 4 5 print(df_index.index) # Index(['A', 'B'], dtype='object') print(df_index.index.tolist()) # ['A', 'B'] print(df_index.columns) # Index(['X', 'Y', 'Z'], dtype='object') print(df_index.columns.tolist()) # ['X', 'Y', 'Z'] 

Notez qu’un I๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ permet une itรฉration directe dans une boucle ๐Ÿโ€Œ๐จโ€Œ๐ซโ€Œ pour extraire des รฉlรฉments et prend en charge l’utilisation de [] pour une rรฉcupรฉration spรฉcifique basรฉe sur un index. Bien que le dรฉcoupage soit possible, la modification d’รฉlรฉments directement dans un I๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ ne l’est pas. Ainsi, la conversion en liste n’est pas nรฉcessaire si vous avez uniquement besoin d’accรฉder ร  des รฉlรฉments.

for i in df_index.columns: print(i, type(i)) # X <class 'str'> # Y <class 'str'> # Z <class 'str'> print(df_index.columns[0]) # X print(df_index.columns[:2]) # Index(['X', 'Y'], dtype='object') # df_index.columns[0] = 'x' # TypeError: Index does not support mutable operations