【发布时间】:2021-11-04 10:49:45
【问题描述】:
我有 2 个数据框,我想知道是否可以以更通用和更紧凑的方式跨多个列连接。例如,这是一种非常明确的方式,很难在函数中泛化:
df = df1.join(df2,
on=[
(df1.event_date < df2.risk_date)
&
(df1.client_id == df2.client_id_risk)
&
(df1.col_thr_param_1 == df2.col_thr_param_1)
&
(df1.col_thr_param_2 == df2.col_thr_param_2)
&
(df1.col_thr_param_3 == df2.col_thr_param_3)
&
(df1.col_thr_param_4 == df2.col_thr_param_4)
], how="left"
)
如果我有一个包含我想要加入的阈值列名称的列表:
thr = [“col_thr_param_1”、“col_thr_param_2”、“col_thr_param_3”、“col_thr_param_4”]
是否可以在函数中传递它并泛化连接?或者我总是需要求助于调用 df1 和 df2?像这样。
def join_dfs(df1: DataFrame, df2: DataFrame, thr_cols: List[str]):
df = df1.join(df2,
on=[
(df1.event_date < df2.risk_date)
&
(df1.client_id == df2.client_id_risk)
&
**df1.thr_cols == **df2.thr_cols
], how="left"
)
【问题讨论】:
标签: python dataframe join pyspark