objectif
Faire une jointure as-of (la plus proche dans le passé).
code minimal
import pandas as pd
a = pd.DataFrame({"t":pd.to_datetime(["2025-01-01 10:00","2025-01-01 10:05"]), "va":[1,2]})
b = pd.DataFrame({"t":pd.to_datetime(["2025-01-01 10:02","2025-01-01 10:07"]), "vb":[10,20]})
m = pd.merge_asof(a.sort_values("t"), b.sort_values("t"), on="t", direction="backward")
print(m.vb.tolist())
utilisation
import pandas as pd
a = pd.DataFrame({"t":pd.to_datetime(["2025-01-01 10:03"]), "va":[9]})
b = pd.DataFrame({"t":pd.to_datetime(["2025-01-01 10:00","2025-01-01 10:05"]), "vb":[1,2]})
print(pd.merge_asof(a, b, on="t", tolerance=pd.Timedelta("4m")).vb.iloc[0])
variante(s) utile(s)
import pandas as pd
a = pd.DataFrame({"t":pd.to_datetime(["2025-01-01 10:03"]), "va":[9]})
b = pd.DataFrame({"t":pd.to_datetime(["2025-01-01 11:00"]), "vb":[1]})
print(pd.merge_asof(a, b, on="t", direction="forward").vb.isna().all())
notes
- Trier par la clé temporelle avant merge_asof.