我有PyparkDataframe( source_df
)其中有一列的值用逗号分隔。我试图用基于另一个Dataframe的查找来替换这些值( lookup_df
)
源数据框
A B T ... followed by N unrelated columns...
foo a,b,c sam
bar k,a,c bob
faz b,a,f sam
查找\u df
C D
a h1
b h2
c h3
输出Dataframe:
A T B new_col ... followed by N unrelated columns...
foo sam a,b,c h1,h2,h3
bar bob h,a,c EMPTY,h1,h3
faz sam b,a,f h2,h1,EMPTY
列 A
是主键,并且始终是唯一的。列 T
对于给定的值是唯一的 A
.
你能帮我做到这一点吗?
2条答案
按热度按时间wqnecbli1#
可以拆分和分解b列,然后进行左连接。然后收集d值并用逗号连接。
vojdkbi02#
这是另一种不必爆炸第一个Dataframe的方法。直接加入,如:
',B,' LIKE '%,C,%'
. 然后groupbyA
将Map收集到Map列中,并在列的拆分上使用transformB
为每个元素获取相应的替换项。最后,使用
array_join
函数,您可以从转换的数组结果中获得逗号分隔的列表,并将空值替换为EMPTY
: