pysparksql:根据不同数据帧的列中是否存在值来创建新列

2024-10-01 09:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图跟随this answer,但我的问题略有不同。在

{{cd2>有两个

df3 = df2.withColumn("game", (df2.week_id.isin(bears2.week_if), 1,0))

基本上,如果df2的值存在于bears2的相应列中,我想要一个1或者一个0

我试过另一个问题中的expr(),但没能让它起作用。看起来像这样:

^{pr2}$

Tags: answeridgameifthisdf2weekexpr
1条回答
网友
1楼 · 发布于 2024-10-01 09:23:52

当前不能像这样将IN与pysparksql1一起使用。相反,您必须连接数据帧。在

尝试类似于:

from pyspark.sql.functions import col, when
df3 = df2.withColumn("id", col("week_id")).alias("df2")\
    .join(bears2.withColumn("id", col("week_if")).alias("bears2"), on="id", how="left")\
    .select("df2.*", when(col("bears2.id").isNotNull(), 1).otherwise(0))

为了使联接工作,联接键列必须存在于两个数据帧中。因此,我首先调用withColumn("id", ...)将列重命名为与联接相同的值。在

接下来,我们执行一个左连接,将所有列保留在df2中。{{3}中的所有列{我们最后使用cda2}创建列。在

when()的第一个参数是一个条件。如果是True,则返回第二个参数。如果不是,则使用otherwise()中的值。在

相关问题 更多 >