La fonction ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.๐โ๐จโ๐งโ๐โ๐โ๐ญโ() vous permet de concatรฉner (joindre) plusieurs ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ et Objets ๐ฉ๐๐ง๐๐๐ฌ.S๐๐ซโ๐ขโ๐โ๐ฌโ .
- Utilisation de base de ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.๐โ๐จโ๐งโ๐โ๐โ๐ญโ()
- Concatรฉner plusieurs objets
- Concatรฉner plusieurs objets
- Concatรฉner ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ et ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.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 .
- pandas : supprime NaN (valeurs manquantes) avec dropna()
- pandas : remplacez NaN (valeurs manquantes) par fillna()
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
