# 8.2 merge: Orders सोबत Stores जोडा

Source: https://ravindrabagale.com/mr/datascience/ch08-combining-data/8-2-merge-orders-stores.html
Language: mr (Marathi with English technical terms)

प्रत्येक order च्या store_id वरून city आणि manager आणूया:

orders = pd.DataFrame({
    "order_id": ["BLK-001", "BLK-002", "AMN-003", "BLK-004"],
    "store_id": ["PUN-01", "NSK-01", "KOP-01", "PUN-99"],
    "amount": [64, 90, 58, 110],
    "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(len(orders), len(left), len(inner))

 | how | काय राहतं?

 | left | सर्व orders; store सापडला नाही तर NaN — इथे PUN-99

 | inner | फक्त दोन्ही tables मध्ये जुळणाऱ्या keys

 | right / outer | या class मध्ये कमी वापर; हे join प्रकारही उपलब्ध आहेत

Jupyter मध्ये steps

orders आणि stores तयार करा.

left = orders.merge(stores, on="store_id", how="left") run करा.

न जुळलेल्या rows शोधा: left[left["city"].isna()].

योग्य many-to-one left join मध्ये len(left) == len(orders) आहे का तपासा.

BLK-004 / PUN-99 च्या city मध्ये NaN दिसेल. Export मधला store_id तपासण्याची ही खूण आहे.

रवींद्र बागले यांची tip

Merge नंतर rows वाढल्या तर दुर्लक्ष करू नका. Stores मध्ये एक key अनेकदा असल्याने rows multiply होऊ शकतात. आधी stores["store_id"].duplicated().sum() तपासा.
