logo

Hoe combineer je twee dataframes in Python – Pandas?

In veel praktijksituaties komen de gegevens die we willen gebruiken in meerdere bestanden voor. Vaak moeten we deze bestanden combineren in één DataFrame om de gegevens te analyseren. Panda's bieden dergelijke faciliteiten voor het eenvoudig combineren van Series of DataFrame met verschillende soorten setlogica voor de indexen en relationele algebra-functionaliteit in het geval van join-/samenvoegingsbewerkingen. We kunnen ook gegevens uit meerdere tabellen combineren Panda's . Daarnaast bieden panda's ook hulpprogramma's om twee Series of DataFrame te vergelijken en hun verschillen samen te vatten.

DataFrames aaneenschakelen in Panda's

De functie concat() in Pandas wordt gebruikt om kolommen of rijen van het ene DataFrame aan het andere toe te voegen. De Panda's concat()-functie doet al het zware werk van het uitvoeren van aaneenschakelingsbewerkingen langs een as, terwijl optionele setlogica (vereniging of snijpunt) van de indexen (indien aanwezig) op de andere assen wordt uitgevoerd.



Python3








import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> frames>=> [df1, df2]> result>=> pd.concat(frames)> display(result)>

>

>

Uitgang:

    id Name  0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>

DataFrames samenvoegen in Panda's

Toen we onze DataFrames aan elkaar voegden, voegden we ze eenvoudigweg aan elkaar toe, d.w.z. ze werden verticaal of naast elkaar gestapeld. Een andere manier om DataFrames te combineren is door in elke gegevensset kolommen te gebruiken die gemeenschappelijke waarden bevatten (een gemeenschappelijke unieke ID). Het combineren van DataFrames met behulp van een gemeenschappelijk veld wordt join genoemd. De kolommen die de gemeenschappelijke waarden bevatten, worden join-sleutel(s) genoemd. Het op deze manier samenvoegen van DataFrames is vaak handig wanneer het ene DataFrame een opzoektabel is met aanvullende gegevens die we in het andere willen opnemen.

Opmerking: Dit proces van het samenvoegen van tabellen is vergelijkbaar met wat we doen met tabellen in een SQL-database .

Wanneer u meerdere DataFrames aan elkaar lijmt, kunt u kiezen hoe u met de andere assen omgaat (behalve degene die wordt samengevoegd). Dit kan op de volgende twee manieren:

  • Neem de vereniging van allemaal: join=’outer’. Dit is de standaardoptie omdat er geen informatieverlies optreedt.
  • Neem het kruispunt, join=’inner’.

Voorbeeld: Inner Join van twee dataframes met behulp van de concat()-methode

In dit voorbeeld twee panda's DataFrames,df1>Endf3>, worden aaneengeschakeld met behulp van een inner join op basis van hun indices. Het resulterende DataFrame, genaamd ‘result’, bevat alleen rijen waarin de kolom ‘id’ voorkomtdf1>komt overeen met de kolom ‘Plaats’df3>.

Python3


hoe csv-bestand in java te lezen



import> pandas as pd> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # the default behaviour is join='outer'> # inner join> result>=> pd.concat([df1, df3], axis>=>1>, join>=>'inner'>)> display(result)>

>

>

Uitgang:

  id Name City Age  0 A01 ABC MUMBAI 12 1 A02 PQR PUNE 13 2 A03 DEF MUMBAI 14 3 A04 GHI DELHI 12>

Aaneenschakelen met behulp van de append()-functie

Een handige snelkoppeling naar concat() is de instantiemethode append() op Series en DataFrame. Deze methode kan worden gebruikt om gegevens uit meerdere tabellen in Pandas te combineren. Deze methoden dateerden feitelijk van vóór concat.

Voorbeeld 1: Twee dataframes combineren met de append()-methode

In dit voorbeeld zijn twee Pandas DataFrames,df1>Endf2>, worden gecombineerd met behulp van deappend>methode, resulterend in een nieuw DataFrame met de naam ‘resultaat’. Het resulterende DataFrame bevat alle rijen van beidedf1>Endf2>, met een continue index.

1 miljoen hoeveel 0

Python3




import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> # append method> result>=> df1.append(df2)> display(result)>

>

>

Uitgang:

   id Name  0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>

Opmerking: append() kan meerdere objecten nodig hebben om samen te voegen.

Voorbeeld 2: Combineer gegevens uit meerdere tabellen in Panda's

In dit voorbeeld zijn drie Pandas DataFrames,df1>,df2>, Endf3>, worden aan elkaar toegevoegd met behulp van deappend>methode. Het resulterende DataFrame met de naam ‘result’ combineert alle rijen van de drie DataFrames, waarbij een continue index behouden blijft.

Python3




import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # appending multiple DataFrame> result>=> df1.append([df2, df3])> display(result)>

>

>

Uitgang:

   id Name City Age  0 A01 ABC NaN NaN 1 A02 PQR NaN NaN 2 A03 DEF NaN NaN 3 A04 GHI NaN NaN 0 B05 XYZ NaN NaN 1 B06 TUV NaN NaN 2 B07 MNO NaN NaN 3 B08 JKL NaN NaN 0 NaN NaN MUMBAI 12 1 NaN NaN PUNE 13 2 NaN NaN MUMBAI 14 3 NaN NaN DELHI 12>