Ravindra Bagale · Data Scienceसर्व coursesया course चे lessonsशोधाEnglish

Data Science · मराठी आवृत्ती

28.2 merge how= left / inner / outer

By Ravindra Bagale

या course चे सर्व chapters (py + ch)

हे का शिकायचं?

left = डावीकडच्या सगळ्या rows. inner = फक्त जुळलेल्या. outer = दोन्हीकडच्या.

हे काय आहे?

pd.merge(left, right, on="key", how="left"). Shape आणि NaNs पाहा.

कसं करायचं?

Step 1. how=left try.

Step 2. how=inner तुलना.

Step 3. NaN count.

Step 4. कोणता how व्यवसायाला हवा.

उदाहरणं: copy करा आणि चालवा

how Keeps
left All left rows; missing right → NaN
inner Only matching keys
outer Keys from either side
right All right rows (less common from orders)

उदाहरण A — Classic Blinkit left join.

import pandas as pd

orders = pd.DataFrame({
    "order_id": ["BLK-001", "BLK-002", "AMN-003", "BLK-004"],
    "store_id": ["PUN-01", "NSK-01", "KOP-01", "PUN-99"],
    "amount_inr": [64, 90, 58, 110],
    "status": ["Delivered", "Delivered", "Cancelled", "Delivered"],
    "customer": ["Ruhi Bagale", "Amir", "Zoya", "Ravina"],
})
stores = pd.DataFrame({
    "store_id": ["PUN-01", "NSK-01", "KOP-01", "SLP-01"],
    "city": ["Pune", "Nashik", "Kolhapur", "Solapur"],
    "manager": ["Ravindra Bagale", "Shraddha Bagale", "Salman", "Raja"],
})

left = orders.merge(stores, on="store_id", how="left")
inner = orders.merge(stores, on="store_id", how="inner")
print(left)
print("orders", len(orders), "left", len(left), "inner", len(inner))
print("unmatched", left.loc[left["city"].isna(), "order_id"].tolist())

What you should see. BLK-004 / PUN-99 unmatched on left; missing from inner.

उदाहरण B — When inner is OK.

Training notebook that only wants “valid store map” rows — inner is fine if you log how many dropped.

उदाहरण C — Outer for reconciliation.

outer = orders.merge(stores, on="store_id", how="outer", indicator=True)
print(outer["_merge"].value_counts())