我试图在Spark数据框中创建一列,如果列的行位于单独的数据框中,则使用一个标志
这是我的主要Spark数据帧(df_main
)
+--------+
|main |
+--------+
|28asA017|
|03G12331|
|1567L044|
|02TGasd8|
|1asd3436|
|A1234567|
|B1234567|
+--------+
这是我的引用(df_ref
),这个引用中有数百行,所以我显然不能像这样硬编码它们solution或this one
+--------+
|mask_vl |
+--------+
|A1234567|
|B1234567|
...
+--------+
通常,我会在熊猫的数据框中做以下操作:
df_main['is_inref'] = np.where(df_main['main'].isin(df_ref.mask_vl.values), "YES", "NO")
这样我就能得到这个
+--------+--------+
|main |is_inref|
+--------+--------+
|28asA017|NO |
|03G12331|NO |
|1567L044|NO |
|02TGasd8|NO |
|1asd3436|NO |
|A1234567|YES |
|B1234567|YES |
+--------+--------+
我尝试了下面的代码,但我不明白图片中的错误是什么意思
df_main = df_main.withColumn('is_inref', "YES" if F.col('main').isin(df_ref) else "NO")
df_main.show(20, False)
你很接近。我认为您需要的额外步骤是显式创建包含来自
df_ref
的值的列表请参见下图:
然后,您可以创建一个
list
并使用isin
,就像您拥有的一样:这将为您提供:
我想这个问题已经回答了,你可以在这里查看 spark detecting the unchanged rows
如果您想避免对方付费,我建议您采取下一步措施:
相关问题 更多 >
编程相关推荐