Вы можете использовать цикл над списком columns
для построения выражения join
:
join_expr = (df1["name"] == df2[columns[0]])
for c in columns[1:]:
join_expr = join_expr | (df1["name"] == df2[c])
Или используя functools.reduce
:
from functools import reduce
join_expr = reduce(
lambda e, c: e | (df1["name"]==df2[c]),
columns[1:],
df1["name"]==df2[columns[0]]
)
Теперь используйте join_expr
, чтобы присоединиться:
df = df1.join(df2, on=join_expr)