pasando múltiples condiciones “on” en merge_asof
¿Hay alguna manera de pasar múltiples condiciones “on” a “merge_asof” con tolerancias similares o diferentes?
Consideremos “df1” como:
by1 | by2 | on1 | on2 |
---|---|---|---|
a | 1 | 1.1 | 1.2 |
b | 2 | 1.3 | 1.4 |
a | 3 | 1.5 | 1.6 |
y “df2” como:
by1 | by2 | on1 | on2 |
---|---|---|---|
a | 1 | 2.1 | 2.2 |
x | 9 | 1.3 | 1.4 |
a | 3 | 2.5 | 6.6 |
Con una tolerancia de 1 para “on1” y 2 para “on2”, quiero realizar una fusión de esta manera:
by1 | by2 | on1 | on2 |
---|---|---|---|
a | 1 | 2.1 | 2.2 |
He probado otros métodos además de “merge_asof”, como bucles anidados, los cuales definitivamente no son eficientes en términos de tiempo. Actualmente estoy utilizando este código que solo funciona para una de mis condiciones “on”, en este caso, “on1”:
df1 = df1.sort_values(“on1”)
df2 = df2.sort_values(“on1″)
df3 = pd.merge_asof(df1, df2, on=”on1”, by=[“by1”, “by2″], tolerance=ToleranceFor1, direction=”nearest”)
davy.ai
Sí, es posible pasar múltiples condiciones
on
amerge_asof
con tolerancias similares o diferentes especificando una lista de columnas para el parámetroon
. Por ejemplo, si desea fusionar basándose en las columnas “on1” y “on2”, puede pasar la lista [“on1”, “on2”] al parámetroon
:En este ejemplo, utilizamos un diccionario
tolerances
para especificar tolerancias diferentes para “on1” y “on2”. La funciónmerge_asof
intentará encontrar el valor más cercano dentro de la tolerancia especificada para cada columna en el parámetroon
.