Hoe cbind te gebruiken in python (equivalent aan r)
De cbind- functie in R, een afkorting van column-bind , kan worden gebruikt om dataframes samen te combineren op basis van hun kolommen.
We kunnen de functie pandas concat() gebruiken om de equivalente functie in Python uit te voeren:
df3 = pd. concat ([df1, df2], axis= 1 )
De volgende voorbeelden laten zien hoe u deze functie in de praktijk kunt gebruiken.
Voorbeeld 1: Gebruik cbind in Python met gelijke indexwaarden
Laten we aannemen dat we de volgende twee panda-dataframes hebben:
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 to 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) rebound assists 0 to 22 1 B 19 2 C 25 3 D 33 4 E 29
We kunnen de functie concat() gebruiken om deze twee DataFrames snel aan elkaar te koppelen via hun kolommen:
#column-bind two DataFrames into new DataFrame
df3 = pd. concat ([df1, df2], axis= 1 )
#view resulting DataFrame
df3
team points assists rebounds
0 to 99 to 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29
Voorbeeld 2: cbind gebruiken in Python met ongelijke indexwaarden
Laten we aannemen dat we de volgende twee panda-dataframes hebben:
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 to 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) rebound assists 6 to 22 7 B 19 8 C 25 9 D 33 10 E 29
Houd er rekening mee dat de twee DataFrames niet dezelfde indexwaarden hebben.
Als we de functie concat() proberen te gebruiken om ze aan elkaar te koppelen, krijgen we het volgende resultaat:
#attempt to column-bind two DataFrames
df3 = pd. concat ([df1, df2], axis= 1 )
#view resulting DataFrame
df3
team points assists rebounds
0 to 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
Dit is niet het resultaat dat we wilden.
Om dit probleem op te lossen, moeten we eerst de index van elk DataFrame opnieuw instellen voordat we ze samenvoegen:
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 , place= True ) df2. reset_index (drop= True , place= True ) #column-bind two DataFrames df3 = pd. concat ([df1, df2], axis= 1 ) #view resulting DataFrame df3 team points assists rebounds 0 to 99 to 22 1 B 91 B 19 2 C 104 C 25 3 D 88 D 33 4 E 108 E 29
Merk op dat dit DataFrame overeenkomt met het DataFrame dat we in het vorige voorbeeld hebben gekregen.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in Python uitvoert:
Hoe twee Pandas DataFrames op index samen te voegen
Hoe Pandas DataFrames over meerdere kolommen samen te voegen
Hoe u een VLOOKUP uitvoert in Panda’s