import pandas as pd import numpy as np df = pd.DataFrame({ "drop_id": [101, 102, 103, 104], "point": ["north", "south", "north", "south"], "material": ["leaves", "food", "food", "leaves"], "kg": [12., 8., 6., 10.], "bags": pd.array([3, 2, 1, 2], dtype="Int64"), "day": ["2026-10-01", "2026-10-01", "2026-10-02", "2026-10-02"], }) lookup = pd.DataFrame({"point":["north","south"], "label":["North gate","South gate"]}) joined = df.merge(lookup, on="point", how="left", validate="many_to_one", indicator=True) assert joined["_merge"].eq("both").all() report = joined.groupby("label", sort=True)["kg"].sum(min_count=1) assert np.isclose(report.sum(), df["kg"].sum()) print(report.index.tolist()) print(report.tolist()) print(float(report.sum()))