Hvordan kombinere to datarammer i Python – Pandas?
I mange virkelige situasjoner kommer dataene vi ønsker å bruke i flere filer. Vi har ofte behov for å kombinere disse filene til en enkelt DataFrame for å analysere dataene. Pandaer gir slike fasiliteter for enkelt å kombinere Series eller DataFrame med ulike typer settlogikk for indeksene og relasjonsalgebrafunksjonalitet i tilfelle av sammenføynings-/sammenslåingsoperasjoner. Vi kan også kombinere data fra flere tabeller i Pandaer . I tillegg tilbyr pandaer også verktøy for å sammenligne to serier eller DataFrame og oppsummere forskjellene deres.
Sammenkobling av datarammer i pandaer
Concat()-funksjonen i Pandas brukes til å legge til enten kolonner eller rader fra en DataFrame til en annen. De Pandas concat() funksjon utfører alle de tunge løftene med å utføre sammenkoblingsoperasjoner langs en akse mens du utfører valgfri settlogikk (forening eller skjæring) av indeksene (hvis noen) på de andre aksene.
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)> |
Produksjon:
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
Bli med i DataFrames i Pandas
Da vi satte sammen datarammene våre, la vi dem ganske enkelt til hverandre, dvs. stablet dem enten vertikalt eller side ved side. En annen måte å kombinere DataFrames på er å bruke kolonner i hvert datasett som inneholder felles verdier (en felles unik id). Å kombinere DataFrames ved hjelp av et felles felt kalles sammenføyning. Kolonnene som inneholder de vanlige verdiene kalles joinnøkkel(er). Å slå sammen DataFrames på denne måten er ofte nyttig når en DataFrame er en oppslagstabell som inneholder tilleggsdata som vi ønsker å inkludere i den andre.
Merk: Denne prosessen med å slå sammen tabeller ligner på det vi gjør med tabeller i en SQL database .
Når du limer sammen flere DataFrames, har du valget mellom hvordan du skal håndtere de andre aksene (annet enn den som er sammenkoblet). Dette kan gjøres på følgende to måter:
- Ta foreningen av dem alle, join=’outer’. Dette er standardalternativet da det resulterer i null tap av informasjon.
- Ta krysset, join=’indre’.
Eksempel: indre sammenføyning av to datarammer ved bruk av concat()-metoden
I dette eksemplet, to pandaer DataFrames, df1> og df3> , er sammenkoblet ved hjelp av en indre sammenføyning basert på deres indekser. Den resulterende DataFrame, kalt 'resultat', inkluderer bare rader der 'id'-kolonnen inn df1> samsvarer med «By»-kolonnen i df3> .
Python3
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)> |
Produksjon:
id Name City Age 0 A01 ABC MUMBAI 12 1 A02 PQR PUNE 13 2 A03 DEF MUMBAI 14 3 A04 GHI DELHI 12
Sammenslåing ved hjelp av append() funksjon
En nyttig snarvei til concat() er append()-forekomstmetoden på Series og DataFrame. Denne metoden kan brukes til å kombinere data fra flere tabeller i Pandas. Disse metodene gikk faktisk før concat.
Eksempel 1: Kombinere to DataFrame ved å bruke append()-metoden
I dette eksemplet, to Pandas DataFrames, df1> og df2> , kombineres ved hjelp av append> metode, noe som resulterer i en ny DataFrame kalt 'resultat'. Den resulterende DataFrame inneholder alle rader fra begge df1> og df2> , med en kontinuerlig indeks.
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)> |
Produksjon:
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
Merk: append() kan ta flere objekter for å sette sammen.
Eksempel 2: Kombiner data fra flere tabeller i pandaer
I dette eksemplet, tre Pandas DataFrames, df1> , df2> , og df3> , legges sammen ved hjelp av append> metode. Den resulterende DataFrame kalt 'resultat' kombinerer alle rader fra de tre DataFrames, og opprettholder en kontinuerlig indeks.
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)> |
Produksjon:
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