Kuinka yhdistää kaksi tietokehystä Pythonissa – Pandas?

Monissa tosielämän tilanteissa tiedot, joita haluamme käyttää, tulevat useisiin tiedostoihin. Meillä on usein tarve yhdistää nämä tiedostot yhdeksi DataFrame-kehykseksi tietojen analysoimiseksi. Pandat tarjoavat sellaiset mahdollisuudet Series- tai DataFramen helppoon yhdistämiseen erilaisilla hakemistologiikoilla ja relaatioalgebran toiminnallisuuksilla liitos/yhdistys-tyyppisten operaatioiden tapauksessa. Voimme myös yhdistää useiden taulukoiden tiedot Pandat . Lisäksi pandat tarjoavat myös apuohjelmia kahden sarjan tai DataFramen vertailuun ja niiden erojen yhteenvetoon.

Datakehysten ketjuttaminen Pandasissa

Pandasin concat()-funktiota käytetään joko sarakkeiden tai rivien liittämiseen yhdestä DataFrame-kehyksestä toiseen. The Pandas concat()-funktio tekee kaiken raskaan noston ketjutusoperaatioiden suorittamisesta akselia pitkin samalla kun suorittaa valinnaista joukkologiikkaa (liitos tai leikkaus) indekseille (jos sellaisia ​​on) muilla akseleilla.

Python 3




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)>

Lähtö:

    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 

Liittyminen DataFramesiin Pandasissa

Kun liitimme DataFrame-kehyksemme yhteen, yksinkertaisesti lisäsimme ne toisiinsa eli pinoimme ne joko pystysuoraan tai vierekkäin. Toinen tapa yhdistää DataFrame-kehykset on käyttää kussakin tietojoukossa sarakkeita, jotka sisältävät yhteisiä arvoja (yhteinen yksilöllinen tunnus). DataFrame-kehysten yhdistämistä yhteisen kentän avulla kutsutaan yhdistämiseksi. Yhteisiä arvoja sisältäviä sarakkeita kutsutaan liitosavaimiksi. DataFrame-kehysten liittäminen tällä tavalla on usein hyödyllistä, kun yksi DataFrame on hakutaulukko, joka sisältää lisätietoa, jonka haluamme sisällyttää toiseen.

Huomautus: Tämä taulukkojen yhdistämisprosessi on samanlainen kuin mitä teemme taulukoiden kanssa SQL-tietokanta .

Kun liimaat yhteen useita DataFrame-kehyksiä, voit valita, kuinka käsitellä muita akseleita (muuta kuin ketjutettavaa). Tämä voidaan tehdä kahdella seuraavalla tavalla:

  • Ota heidän kaikkien liitto, liity = 'ulkoinen'. Tämä on oletusasetus, koska se ei aiheuta tietojen menetystä.
  • Ota risteys, join=’inner’.

Esimerkki: Kahden datakehyksen sisäinen liitos concat()-menetelmällä

Tässä esimerkissä kaksi pandan datakehystä, df1> ja df3> , ketjutetaan käyttämällä sisäistä liitosta niiden indeksien perusteella. Tuloksena oleva DataFrame, jonka nimi on 'tulos', sisältää vain rivit, joissa 'id'-sarake df1> vastaa Kaupunki-saraketta df3> .

Python 3




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)>

Lähtö:

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

Yhdistäminen append()-funktiolla

Hyödyllinen pikakuvake concat() on append()-instanssimenetelmä Series- ja DataFrame-järjestelmissä. Tätä menetelmää voidaan käyttää yhdistämään tietoja useista Pandas-taulukoista. Nämä menetelmät olivat itse asiassa ennen koncatia.

Esimerkki 1: Kahden datakehyksen yhdistäminen append()-menetelmällä

Tässä esimerkissä kaksi Pandas DataFrame -kehystä, df1> ja df2> , yhdistetään käyttämällä append> menetelmällä, jolloin tuloksena on uusi DataFrame nimeltä 'tulos'. Tuloksena oleva DataFrame sisältää kaikki rivit molemmista df1> ja df2> , jatkuvalla indeksillä.

Python 3




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)>

Lähtö:

   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 

Huomautus: append() voi viedä useita objekteja ketjuttaakseen.

Esimerkki 2: Yhdistä tiedot useista taulukoista Pandasissa

Tässä esimerkissä kolme Panda DataFrame -kehystä, df1> , df2> , ja df3> , liitetään yhteen käyttämällä append> menetelmä. Tuloksena oleva DataFrame nimeltä 'tulos' yhdistää kaikki rivit kolmesta DataFramesta ylläpitäen jatkuvaa indeksiä.

Python 3




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)>

Lähtö:

   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