Comment utiliser cbind en Python (équivalent à R)



La fonction cbind dans R, abréviation de column-bind , peut être utilisée pour combiner des trames de données entre elles par leurs colonnes.

Nous pouvons utiliser la fonction concat() de pandas pour exécuter la fonction équivalente en Python :

df3 = pd.concat([df1, df2], axis=1)

Les exemples suivants montrent comment utiliser cette fonction dans la pratique.

Exemple 1 : utiliser cbind en Python avec des valeurs d’index égales

Supposons que nous ayons les deux DataFrames pandas suivants :

import pandas as pd

#define DataFrames
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
                    'points': [99, 91, 104, 88, 108]})

print(df1)

  team  points
0    A      99
1    B      91
2    C     104
3    D      88
4    E     108

df2 = pd.DataFrame({'assists': ['A', 'B', 'C', 'D', 'E'],
                    'rebounds': [22, 19, 25, 33, 29]})

print(df2)

  assists  rebounds
0       A        22
1       B        19
2       C        25
3       D        33
4       E        29

Nous pouvons utiliser la fonction concat() pour lier rapidement ces deux DataFrames ensemble par leurs colonnes :

#column-bind two DataFrames into new DataFrame
df3 = pd.concat([df1, df2], axis=1)

#view resulting DataFrame
df3

	team	points	assists	rebounds
0	A	99	A	22
1	B	91	B	19
2	C	104	C	25
3	D	88	D	33
4	E	108	E	29

Exemple 2 : utiliser cbind en Python avec des valeurs d’index inégales

Supposons que nous ayons les deux DataFrames pandas suivants :

import pandas as pd

#define DataFrames
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
                    'points': [99, 91, 104, 88, 108]})

print(df1)

  team  points
0    A      99
1    B      91
2    C     104
3    D      88
4    E     108

df2 = pd.DataFrame({'assists': ['A', 'B', 'C', 'D', 'E'],
                    'rebounds': [22, 19, 25, 33, 29]})

df2.index = [6, 7, 8, 9, 10]

print(df2)

   assists  rebounds
6        A        22
7        B        19
8        C        25
9        D        33
10       E        29

Notez que les deux DataFrames n’ont pas les mêmes valeurs d’index.

Si nous essayons d’utiliser la fonction concat() pour les lier ensemble, nous obtiendrons le résultat suivant :

#attempt to column-bind two DataFrames
df3 = pd.concat([df1, df2], axis=1)

#view resulting DataFrame
df3

	team	points	assists	rebounds
0	A	99.0	NaN	NaN
1	B	91.0	NaN	NaN
2	C	104.0	NaN	NaN
3	D	88.0	NaN	NaN
4	E	108.0	NaN	NaN
6	NaN	NaN	A	22.0
7	NaN	NaN	B	19.0
8	NaN	NaN	C	25.0
9	NaN	NaN	D	33.0
10	NaN	NaN	E	29.0

Ce n’est pas le résultat que nous souhaitions.

Pour résoudre ce problème, nous devons d’abord réinitialiser l’index de chaque DataFrame avant de les concaténer ensemble :

import pandas as pd

#define DataFrames
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
                    'points': [99, 91, 104, 88, 108]})

df2 = pd.DataFrame({'assists': ['A', 'B', 'C', 'D', 'E'],
                    'rebounds': [22, 19, 25, 33, 29]})

df2.index = [6, 7, 8, 9, 10]

#reset index of each DataFrame
df1.reset_index(drop=True, inplace=True)
df2.reset_index(drop=True, inplace=True)

#column-bind two DataFrames
df3 = pd.concat([df1, df2], axis=1)

#view resulting DataFrame
df3

	team	points	assists	rebounds
0	A	99	A	22
1	B	91	B	19
2	C	104	C	25
3	D	88	D	33
4	E	108	E	29

Notez que ce DataFrame correspond à celui que nous avons obtenu dans l’exemple précédent.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes en Python :

Comment fusionner deux DataFrames Pandas sur l’index
Comment fusionner des DataFrames Pandas sur plusieurs colonnes
Comment effectuer une RECHERCHEV dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *