Lär Er AI med Python · Lektion

Avancerad sammanfogning och join

pd.merge() med how, on, left_on/right_on, suffixes och merge_asof för tidsbaserade join-operationer.

Lektion 3 av 413 steg

Avancerad sammanfogning och join är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Kombinera DataFrames

pd.merge sammanfogar två DataFrames utifrån gemensamma nycklar, precis som en SQL JOIN. Det är viktigt att behärska alternativen för how vid arbete med relationsdata.

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

Inre join (standard)

how="inner" behåller endast nycklar som finns i BÅDA DataFrames. Det är standardalternativet.

print(pd.merge(left, right, on="id", how="inner"))
#    id name  score
# 0   2    b     90
# 1   3    c     80

Vänsterjoin

how="left" behåller varje rad från den vänstra DataFrame:n; om matchning saknas blir kolumnerna från höger NaN. Detta är den vanligaste join-typen inom analys.

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.0

Yttre join

how="outer" behåller alla nycklar från båda sidor och fyller luckor med NaN. Använd den för att se den fullständiga unionen av posterna.

print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)

Joina på kolumnnamn som skiljer sig

När nyckelkolumnerna har olika namn använder Ni left_on och right_on i stället för on.

r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))

Suffix för överlappande kolumner

Om båda DataFrames innehåller en kolumn med samma namn som inte är en nyckel lägger pandas till _x och _y. Åsidosätt detta med suffixes för tydlighet.

a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))

Indikator-kolumnen

indicator=True lägger till en kolumn med namnet _merge som visar källan för varje rad: left_only, right_only eller both. Ovärderligt när joins ska granskas.

print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came from

Diagnostisera join-problem

Genom att filtrera på indikatorn hittar Ni snabbt omatchade nycklar, en vanlig orsak till att data försvinner utan tydliga fel.

m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"])   # rows that did not match

merge_asof för tidsbaserade join-operationer

pd.merge_asof kopplar ihop rader baserat på den NÄRMASTE nyckeln i stället för en exakt matchning. Funktionen är särskilt utformad för att synkronisera tidsserier, till exempel genom att matcha varje affär med den senast föregående kursnoteringen. Båda dataframerna måste vara sorterade efter nyckeln.

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

Riktning för merge_asof

Som standard söker merge_asof BAKÅT (den senaste nyckeln vid eller före den aktuella). Använd direction="forward" eller "nearest" för att ändra matchningsregeln.

print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))

Välja rätt join

Använd inner för att endast behålla matchningar, left för att komplettera en primär tabell, outer för hela unionen och merge_asof för tidsanpassade join-operationer med ungefärliga nycklar.

Snabbkontroll

Testa era kunskaper om join-operationer.

Sammanfattning

Verktygslåda för sammanslagning:

  • how= inner / left / outer styr vilka nycklar som överlever
  • on jämfört med left_on/right_on för nyckelkolumner
  • suffixes skiljer överlappande namn åt
  • indicator=True granskar radkällorna
  • pd.merge_asof för tidsbaserade join-operationer med närmaste nyckel (sortera först)
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
53
Lektioner
225

Vanliga frågor

Är lektionen ”Avancerad sammanfogning och join” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Avancerad sammanfogning och join”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Vad lär jag mig i ”Avancerad sammanfogning och join”?

pd.merge() med how, on, left_on/right_on, suffixes och merge_asof för tidsbaserade join-operationer. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?

Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Avancerad sammanfogning och join”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?

Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. GroupBy och aggregering
  2. Pivottabeller och korstabellulering
  3. Avancerad sammanfogning och join
  4. Tidsserier i Pandas
← Tillbaka till Lär Er AI med Python