new = (df.withColumn('text',regexp_extract('name', ('|').join(df1.select('text').rdd.flatMap(lambda x:x).collect()), 0))#Use df1 column to slice name and create join column
.join(df1, how='left', on='text')#Join
).show()
Pandas
new =(df.assign(text=df['name'].str.extract(fr"({('|').join(df1['text'].to_list())})")#Extract df1 text from name into new column
).merge(df1, how='left', on='text')#merge
)
name text
0 Auriel iel
1 Michael ael
2 Karl NaN
2条答案
按热度按时间vxf3dgd41#
考虑到OPS增加了可伸缩性的约束,我用lambda和helper函数解决了这个问题
lmvvr0a82#
星星之火
我不确定文本是否始终是最后三个字符。因此,我使用文本列对名称进行切片。如果它总是最后三个字符,那么我们可以简化它。
Pandas