Avansert fletting og sammenkobling
pd.merge() med how, on, left_on/right_on, suffixes og merge_asof for tidsbaserte sammenkoblinger.
Avansert fletting og sammenkobling er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Kombinere DataFrames
pd.merge kobler sammen to DataFrames basert på felles nøkler, akkurat som en SQL JOIN. Det er viktig å beherske de ulike how-alternativene når du arbeider med relasjonelle data.
import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})Inner join (standard)
how="inner" beholder bare nøkler som finnes i BEGGE DataFrames. Dette er standardvalget.
print(pd.merge(left, right, on="id", how="inner"))
# id name score
# 0 2 b 90
# 1 3 c 80Left join
how="left" beholder alle rader fra den venstre DataFrame-en. Kolonner uten samsvar på høyre side blir NaN. Dette er den vanligste join-typen i analyse.
print(pd.merge(left, right, on="id", how="left"))
# id name score
# 0 1 a NaN
# 1 2 b 90.0
# 2 3 c 80.0Outer join
how="outer" beholder alle nøkler fra begge sider og fyller tomrom med NaN. Bruk den for å se hele unionen av postene.
print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)Koble sammen kolonner med ulike navn
Når nøkkelkolonnene har ulike navn, bruker du left_on og right_on i stedet for on.
r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))Suffikser for overlappende kolonner
Hvis begge DataFrames har en kolonne med samme navn som ikke er en nøkkelkolonne, legger pandas til _x og _y. Overstyr dette med suffixes for tydelighet.
a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))indicator-kolonnen
indicator=True legger til en _merge-kolonne som viser kilden til hver rad: left_only, right_only eller both. Dette er svært nyttig når du skal kontrollere join-operasjoner.
print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came fromFinne problemer med join
Ved å filtrere på indicator-kolonnen finner du raskt nøkler uten samsvar, som ofte er årsaken til at data blir fjernet uten at det oppdages.
m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"]) # rows that did not matchmerge_asof for tidssammenføyninger
pd.merge_asof sammenføyer på den NÆRMESTE nøkkelen i stedet for et eksakt samsvar. Funksjonen er laget spesielt for å justere tidsserier, for eksempel ved å koble hver handel til det sist foregående kurstilbudet. Begge datarammene må være sortert etter nøkkelen.
trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))Retning for merge_asof
Som standard ser merge_asof BAKOVER (den siste nøkkelen på eller før). Bruk direction="forward" eller "nearest" for å endre regelen for samsvar.
print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))Velge riktig sammenføyning
Bruk inner for å beholde bare samsvar, left for å berike en primærtabell, outer for den fullstendige unionen og merge_asof for tidsjusterte sammenføyninger med omtrentlige nøkler.
Kort kontroll
Test kunnskapene Deres om sammenføyninger.
Oppsummering
Verktøykasse for sammenføyninger:
how=inner / left / outer styrer hvilke nøkler som beholdesonkontraleft_on/right_onfor nøkkelkolonnersuffixesskiller mellom overlappende navnindicator=Trueviser hvor radene kommer frapd.merge_asoffor tidssammenføyninger med nærmeste nøkkel (sorter først)
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 225
Ofte stilte spørsmål
Er leksjonen «Avansert fletting og sammenkobling» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Avansert fletting og sammenkobling», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hva lærer jeg i «Avansert fletting og sammenkobling»?
pd.merge() med how, on, left_on/right_on, suffixes og merge_asof for tidsbaserte sammenkoblinger. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lær AI med Python?
Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Avansert fletting og sammenkobling»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?
Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- GroupBy og aggregering
- Pivottabeller og krysstabulering
- Avansert fletting og sammenkobling
- Tidsserier i Pandas