我有实木复合地板文件,并且希望基于动态列读取它们,因此举一个例子,我有2个数据帧,并希望基于df2从df1中选择数据。
所以我正在使用下面的代码,但想使它在连接列方面具有动态性,今天我有2列,明天我可以有4列。
a = dict[keys]
col1 = a[0]
col2 = a[1]
v = df1.join(df2,[df1[col1] == df2[col1],
df1.[col2] == df2.[col2],
how='inner')
所以我如何使此列动态化,以便不必对连接条件进行硬编码,并将添加从连接条件中删除的列。
答案 0 :(得分:0)
我只是先根据您的字典生成联接条件对象,然后在联接中使用它。
from functools import reduce
join_condition = reduce(
lambda a, b: a && b,
[ df1[col] == df2[col]
for col
in dict[keys]
]
)
v = df1.join(
df2,
join_condition,
)