Skip to content

La fonction ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ() vous permet de concatรฉner (joindre) plusieurs ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et Objets ๐ฉ๐š๐ง๐๐š๐ฌ.S๐ž๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ .

Pour ajouter de nouvelles lignes et colonnes ร  ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ , reportez-vous ร  l’article suivant :

Pour fusionner plusieurs objets ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ en fonction de colonnes ou d’index, utilisez la fonction ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.๐ฆโ€Œ๐žโ€Œ๐ซโ€Œ๐ โ€Œ๐žโ€Œ() ou la fonction ๐ฆโ€Œ๐žโ€Œ๐ซโ€Œ๐ โ€Œ๐žโ€Œ() et Mรฉthodes ๐ฃโ€Œ๐จโ€Œ๐ขโ€Œ๐งโ€Œ() de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

L’exemple de code de cet article utilise la version 2.0.3 de pandas . Les objets ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ suivants sont utilisรฉs comme exemples.

import pandas as pd print(pd.__version__) # 2.0.3 df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3'], 'B': ['B1', 'B2', 'B3'], 'C': ['C1', 'C2', 'C3']}, index=['ONE', 'TWO', 'THREE']) print(df1) # A B C # ONE A1 B1 C1 # TWO A2 B2 C2 # THREE A3 B3 C3 df2 = pd.DataFrame({'C': ['C2', 'C3', 'C4'], 'D': ['D2', 'D3', 'D4']}, index=['TWO', 'THREE', 'FOUR']) print(df2) # C D # TWO C2 D2 # THREE C3 D3 # FOUR C4 D4 s1 = pd.Series(['X1', 'X2', 'X3'], index=['ONE', 'TWO', 'THREE'], name='X') print(s1) # ONE X1 # TWO X2 # THREE X3 # Name: X, dtype: object s2 = pd.Series(['Y2', 'Y3', 'Y4'], index=['TWO', 'THREE', 'FOUR'], name='Y') print(s2) # TWO Y2 # THREE Y3 # FOUR Y4 # Name: Y, dtype: object 

Utilisation de base de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.๐œโ€Œ๐จโ€Œ๐งโ€Œ๐œโ€Œ๐šโ€Œ๐ญโ€Œ()

Concatรฉnation d’objets : ๐จโ€Œ๐›โ€Œ๐ฃโ€Œ๐ฌโ€Œ

Pour concatรฉner des objets D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , transmettez-les sous forme de liste ou de tuple au premier argument, ๐จโ€Œ๐›โ€Œ๐ฃโ€Œ๐ฌโ€Œ . Des exemples utilisant S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ sont fournis plus loin.

df_concat = pd.concat([df1, df2]) print(df_concat) # A B C D # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN C2 D2 # THREE NaN NaN C3 D3 # FOUR NaN NaN C4 D4 

Vous pouvez concatรฉner n’importe quel nombre d’objets.

df_concat_multi = pd.concat([df1, df2, df1]) print(df_concat_multi) # A B C D # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN C2 D2 # THREE NaN NaN C3 D3 # FOUR NaN NaN C4 D4 # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN 

Un nouvel objet est gรฉnรฉrรฉ et l’objet d’origine n’est pas modifiรฉ.

Sens de concatรฉnation (vertical ou horizontal) : ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ

Utilisez l’argument ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ pour prรฉciser la direction de la concatรฉnation, verticale ou horizontale.

Si ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 (par dรฉfaut), les objets sont combinรฉs verticalement.

df_v = pd.concat([df1, df2], axis=0) print(df_v) # A B C D # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN C2 D2 # THREE NaN NaN C3 D3 # FOUR NaN NaN C4 D4 

Si ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 , les objets sont combinรฉs horizontalement.

df_h = pd.concat([df1, df2], axis=1) print(df_h) # A B C C D # ONE A1 B1 C1 NaN NaN # TWO A2 B2 C2 C2 D2 # THREE A3 B3 C3 C3 D3 # FOUR NaN NaN NaN C4 D4 

Mรฉthode de concatรฉnation (externe ou interne) : ๐ฃโ€Œ๐จโ€Œ๐ขโ€Œ๐งโ€Œ

L’argument ๐ฃโ€Œ๐จโ€Œ๐ขโ€Œ๐งโ€Œ dรฉtermine si toutes les colonnes/lignes ou seulement celles avec des noms communs doivent รชtre conservรฉes aprรจs la concatรฉnation.

Avec ๐ฃโ€Œ๐จโ€Œ๐ขโ€Œ๐งโ€Œ=’๐จโ€Œ๐ฎโ€Œ๐ญโ€Œ๐žโ€Œ๐ซโ€Œ’ (par dรฉfaut), toutes les colonnes/lignes sont conservรฉes. Les รฉlรฉments absents dans l’objet d’origine sont reprรฉsentรฉs par N๐šโ€ŒN .

Avec ๐ฃโ€Œ๐จโ€Œ๐ขโ€Œ๐งโ€Œ=’๐ขโ€Œ๐งโ€Œ๐งโ€Œ๐žโ€Œ๐ซโ€Œ’ , seules les colonnes/lignes avec des noms communs sont conservรฉes.

df_v_out = pd.concat([df1, df2], join='outer') print(df_v_out) # A B C D # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN C2 D2 # THREE NaN NaN C3 D3 # FOUR NaN NaN C4 D4 df_v_in = pd.concat([df1, df2], join='inner') print(df_v_in) # C # ONE C1 # TWO C2 # THREE C3 # TWO C2 # THREE C3 # FOUR C4 

Les mรชmes rรจgles de concatรฉnation s’appliquent ร  la concatรฉnation horizontale ( ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 ).

df_h_out = pd.concat([df1, df2], axis=1, join='outer') print(df_h_out) # A B C C D # ONE A1 B1 C1 NaN NaN # TWO A2 B2 C2 C2 D2 # THREE A3 B3 C3 C3 D3 # FOUR NaN NaN NaN C4 D4 df_h_in = pd.concat([df1, df2], axis=1, join='inner') print(df_h_in) # A B C C D # TWO A2 B2 C2 C2 D2 # THREE A3 B3 C3 C3 D3 

Vous pouvez renommer ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ ou ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ ร  l’aide de la mรฉthode ๐ซโ€Œ๐žโ€Œ๐งโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ() ou ๐ฌโ€Œ๐žโ€Œ๐ญโ€Œ_๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ() .

df_h = pd.concat([df1, df2.rename(index={'FOUR': 'ONE'})], axis=1) print(df_h) # A B C C D # ONE A1 B1 C1 C4 D4 # TWO A2 B2 C2 C2 D2 # THREE A3 B3 C3 C3 D3 

Concatรฉner plusieurs objets

Comme indiquรฉ dans les exemples prรฉcรฉdents, lors de la concatรฉnation de plusieurs objets D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ , un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ est renvoyรฉ.

df_concat = pd.concat([df1, df2]) print(df_concat) # A B C D # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # TWO NaN NaN C2 D2 # THREE NaN NaN C3 D3 # FOUR NaN NaN C4 D4 print(type(df_concat)) # <class 'pandas.core.frame.DataFrame'> 

Concatรฉner plusieurs objets

Lors de la concatรฉnation de plusieurs objets S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ , un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ est renvoyรฉ pour la concatรฉnation verticale ( ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 , par dรฉfaut).

s_v = pd.concat([s1, s2]) print(s_v) # ONE X1 # TWO X2 # THREE X3 # TWO Y2 # THREE Y3 # FOUR Y4 # dtype: object print(type(s_v)) # <class 'pandas.core.series.Series'> 

Pour la concatรฉnation horizontale ( ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 ), un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ est renvoyรฉ. Vous pouvez utiliser l’argument ๐ฃโ€Œ๐จโ€Œ๐ขโ€Œ๐งโ€Œ .

s_h = pd.concat([s1, s2], axis=1) print(s_h) # X Y # ONE X1 NaN # TWO X2 Y2 # THREE X3 Y3 # FOUR NaN Y4 print(type(s_h)) # <class 'pandas.core.frame.DataFrame'> 

s_h_in = pd.concat([s1, s2], axis=1, join='inner') print(s_h_in) # X Y # TWO X2 Y2 # THREE X3 Y3 

Vous pouvez รฉgalement crรฉer un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ en concatรฉnant plusieurs S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ร  l’aide du constructeur ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ() . Dans ce cas, les S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ peuvent รฉgalement รชtre disposรฉes sous forme de lignes dans le D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ . Reportez-vous ร  l’article suivant pour plus de dรฉtails.

Concatรฉner ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ

Lorsque vous concatรฉnez horizontalement un D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ et un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ ( ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 ), le S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ devient une nouvelle colonne et son nom est utilisรฉ comme nom de colonne. Vous pouvez utiliser l’argument ๐ฃโ€Œ๐จโ€Œ๐ขโ€Œ๐งโ€Œ .

df_s_h = pd.concat([df1, s2], axis=1) print(df_s_h) # A B C Y # ONE A1 B1 C1 NaN # TWO A2 B2 C2 Y2 # THREE A3 B3 C3 Y3 # FOUR NaN NaN NaN Y4 df_s_h_in = pd.concat([df1, s2], axis=1, join='inner') print(df_s_h_in) # A B C Y # TWO A2 B2 C2 Y2 # THREE A3 B3 C3 Y3 

Pour la concatรฉnation verticale ( ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 , par dรฉfaut), le rรฉsultat est le suivant :

df_s_v = pd.concat([df1, s1]) print(df_s_v) # A B C 0 # ONE A1 B1 C1 NaN # TWO A2 B2 C2 NaN # THREE A3 B3 C3 NaN # ONE NaN NaN NaN X1 # TWO NaN NaN NaN X2 # THREE NaN NaN NaN X3 

Pour ajouter un S๐žโ€Œ๐ซโ€Œ๐ขโ€Œ๐žโ€Œ๐ฌโ€Œ comme nouvelle ligne, vous pouvez soit le convertir en D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ avant la concatรฉnation, soit utiliser .๐ฅโ€Œ๐จโ€Œ๐œโ€Œ .

print(s1.set_axis(df1.columns).to_frame().T) # A B C # X X1 X2 X3 df_s_v = pd.concat([df1, s1.set_axis(df1.columns).to_frame().T]) print(df_s_v) # A B C # ONE A1 B1 C1 # TWO A2 B2 C2 # THREE A3 B3 C3 # X X1 X2 X3 

print(s2.values) # ['Y2' 'Y3' 'Y4'] df1.loc[s2.name] = s2.values print(df1) # A B C # ONE A1 B1 C1 # TWO A2 B2 C2 # THREE A3 B3 C3 # Y Y2 Y3 Y4