Koşul veya en yakın eşleşme ile DataFrame birleştirme

Polars ile Veri Dönüşümü

Liam Brannigan

Data Scientist & Polars Contributor

Koşula göre birleştirme

Dünya kupası kazananlarını gösteren tek bir tablo

Polars ile Veri Dönüşümü

Koşula göre birleştirme

Dünya kupası kazananlarını ve gümüş/altın kategorileri için asgari galibiyetleri gösteren tablolar.

Polars ile Veri Dönüşümü

Koşula göre birleştirme

Dünya kupası kazananları, seviye tablosu ve kazanılan seviyelerin birleştirilmiş tablosu

Polars ile Veri Dönüşümü

Koşula göre birleştirme

Dünya kupası kazananları, seviye tablosu ve Brezilya için iki satırın vurgulandığı birleştirilmiş tablo.

Polars ile Veri Dönüşümü

Tercihlere sahip uygulama kullanıcıları

restaurants = pl.read_csv("restuarants.csv")
shape: (4, 5)
| business        | location    | review | price | type       |
| ---             | ---         | ---    | ---   | ---        |
| str             | str         | f64    | i64   | str        |
|-----------------|-------------|--------|-------|------------|
| 7burgers        | Wakey Wakey | 4.2    | 15    | restaurant |
| Costa Coffee    | City Point  | 4.5    | 8     | café       |
| Costa Coffee    | Waterloo    | 4.1    | 8     | café       |
| The Queens Head | Denman St.  | 4.7    | 25    | bar        |
Polars ile Veri Dönüşümü

Kullanıcılar tablosu

users = pl.read_csv("app_users.csv")
shape: (3, 3)
| user_name | budget | type       |
| ---       | ---    | ---        |
| str       | i64    | str        |
|-----------|--------|------------|
| Bob       | 12     | café       |
| Alice     | 15     | restaurant |
| Charlie   | 22     | bar        |
Polars ile Veri Dönüşümü

Koşula göre birleştirme

restaurants.join_where(


)
Polars ile Veri Dönüşümü

Koşula göre birleştirme

restaurants.join_where(
    users,

)
Polars ile Veri Dönüşümü

Koşula göre birleştirme

restaurants.join_where(
    users,
    pl.col("type") == pl.col("type_right")
)
Polars ile Veri Dönüşümü

Koşula göre birleştirme

restaurants.join_where(
    users,
    pl.col("type") == pl.col("type_right")
)
shape: (4, 8)
| business        | type       | ... | user_name | budget |
| ---             | ---        | ... | ---       | ---    |
| str             | str        | ... | str       | i64    |
|-----------------|------------|-----|-----------|--------|
| 7burgers        | restaurant | ... | Alice     | 15     |
| Costa Coffee    | café       | ... | Bob       | 12     |
| Costa Coffee    | café       | ... | Bob       | 12     |
| The Queens Head | bar        | ... | Charlie   | 22     |
Polars ile Veri Dönüşümü

Birden çok koşulla birleştirme

restaurants.join_where(
    users,
    pl.col("type") == pl.col("type_right"),
    pl.col("price") <= pl.col("budget")
)
shape: (3, 8)
| user_name | budget | business     | price | type       | ... |
| ---       | ---    | ---          | ---   | ---        | ... |
| str       | i64    | str          | i64   | str        | ... |
|-----------|--------|--------------|-------|------------|-----|
| Alice     | 15     | 7burgers     | 15    | restaurant | ... |
| Bob       | 12     | Costa Coffee | 8     | café       | ... |
| Bob       | 12     | Costa Coffee | 8     | café       | ... |
Polars ile Veri Dönüşümü

En güncel değerlere göre birleştirme

shape: (4, 3)
| business | date        | rating |
| ---      | ---         | ---    |
| str      | date        | i64    |
|----------|-------------|--------|
| 7burgers | 2025-03-15  | 5      |
| 7burgers | 2025-06-20  | 3      |
| 7burgers | 2025-09-10  | 4      |
| 7burgers | 2025-11-25  | 5      |

$$

  • Görev: her yorumu en ilgili denetimle eşleştiriniz
shape: (3, 4)
| user   | business | date       | score |
| ---    | ---      | ---        | ---   |
| str    | str      | date       | f64   |
|--------|----------|------------|-------|
| Charlie | 7burgers | 2025-05-01 | 3.8   |
| Bob     | 7burgers | 2025-08-01 | 4.2   |
| Alice   | 7burgers | 2025-12-01 | 4.5   |
Polars ile Veri Dönüşümü

En güncel değerlere göre birleştirme

reviews.sort("date").join_asof(



)

$$

$$

$$

$$

  • join_asof - belirli bir tarihe göre birleştirir
Polars ile Veri Dönüşümü

En güncel değerlere göre birleştirme

reviews.sort("date").join_asof(
    inspections.sort("date"),


)
Polars ile Veri Dönüşümü

En güncel değerlere göre birleştirme

reviews.sort("date").join_asof(
    inspections.sort("date"),
    on="date",

)
Polars ile Veri Dönüşümü

En güncel değerlere göre birleştirme

reviews.sort("date").join_asof(
    inspections.sort("date"),
    on="date",
    strategy="backward"
)
| user    | date       | score | ... | rating |
| ---     | ---        | ---   | ... | ---    |
| str     | date       | f64   | ... | i64    |
|---------|------------|-------|-----|--------|
| Charlie | 2025-05-01 | 3.8   | ... | 5      |
| Bob     | 2025-08-01 | 4.2   | ... | 3      |
| Alice   | 2025-12-01 | 4.5   | ... | 5      |
Polars ile Veri Dönüşümü

En yakın değerlere göre birleştirme

reviews.sort("date").join_asof(
    inspections.sort("date"),
    on="date",
    strategy="nearest"
)
| user    | date       | score | ... | rating |
| ---     | ---        | ---   | ... | ---    |
| str     | date       | f64   | ... | i64    |
|---------|------------|-------|-----|--------|
| Charlie | 2025-05-01 | 3.8   | ... | 5      |
| Bob     | 2025-08-01 | 4.2   | ... | 4      |
| Alice   | 2025-12-01 | 4.5   | ... | 5      |
Polars ile Veri Dönüşümü

Strateji seçimi

$$

Her biri iki satırlı zaman serisi verisi içeren iki tablo diyagramı.

Polars ile Veri Dönüşümü

Strateji seçimi - geriye doğru

$$

Soldaki iki satırın sağdaki ilk satıra eşleştiği oklarla zaman serisi tabloları diyagramı.

Polars ile Veri Dönüşümü

Strateji seçimi - en yakın

$$

Soldaki her satırın sağdaki karşılık gelen satıra eşleştiği oklarla zaman serisi tabloları diyagramı.

Polars ile Veri Dönüşümü

Strateji seçimi - ileriye doğru

$$

Soldaki iki satırın sağdaki ikinci satıra eşleştiği oklarla zaman serisi tabloları diyagramı.

Polars ile Veri Dönüşümü

Gruplar içinde eşleştirme

reviews.sort("date").join_asof(
    restaurants.sort("date"),
    on="date",

by=["business", "location"]
)
| user    | business        | location    | date       | score | ... | rating |
| ---     | ---             | ---         | ---        | ---   | ... | ---    |
| str     | str             | str         | date       | f64   | ... | i64    |
|---------|-----------------|-------------|------------|-------|-----|--------|
| Charlie | 7burgers        | Wakey Wakey | 2025-05-01 | 3.8   | ... | null   |
| Bob     | Costa Coffee    | City Point  | 2025-05-01 | 4.0   | ... | 5      |
| Bob     | 7burgers        | Wakey Wakey | 2025-08-01 | 4.2   | ... | null   |
| Alice   | 7burgers        | Wakey Wakey | 2025-12-01 | 4.5   | ... | 4      |
| Alice   | The Queens Head | Denman St.  | 2025-12-01 | 4.7   | ... | 5      |
Polars ile Veri Dönüşümü

Haydi pratik yapalım!

Polars ile Veri Dönüşümü

Preparing Video For Download...