首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有更多条件的pyspark连接

具有更多条件的pyspark连接
EN

Stack Overflow用户
提问于 2020-02-21 10:03:52
回答 1查看 36关注 0票数 0

我正在尝试用"left“连接两个数据帧,用"item”连接条件。

如果df2没有"equivalent_item",那么我想使用df1 "item“本身。如果df2 "equivalent_item“是null (例如奇异果),那么等效项应该是null,稍后我可以删除该行。

df1:

代码语言:javascript
复制
name     item
jack     rice
hari     banana
mala     apples
kin      kiwi
Mike     salt
fall     sugar
yedy     pasta
vall     fruits   

df2:

代码语言:javascript
复制
item     equivalent_item
rice      basmathi
banana    delmonte 
apples    fuji apple
kiwi 
pasta     barello

预期输出:

代码语言:javascript
复制
name     items        equivalent_item
jack     rice         basmathi
hari     banana       delmonte
mala     apples       fuji apple
kin      kiwi
Mike     salt         salt
fall     sugar        sugar
yedy     pasta        barello
vall     fruits       fruits  

我不得不像下面这样做:

代码语言:javascript
复制
def equivalent_name(name):
    elif name == 'rice':
        return 'basmathi'
    elif name == 'banana':
        return 'delmonte'
    elif name == 'apples':
        return 'fuji apple'
    elif name == 'apples':
        return 'fuji apple'
    elif name == 'pasta':
        return 'barello'
    else
        return name

df1['name'] = df1['name'].apply(equivalent_name)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-21 11:19:22

使用df.join()进行左连接

代码语言:javascript
复制
df1.join(df2, ["item"], "left")

如果连接列在数据帧中具有不同的名称,则使用。

代码语言:javascript
复制
df1.join(df2, df1["item_1"]=df2["item_2"], "left")

这将导致数据帧同时具有item_1和item_2列,您可以删除不需要的列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60331165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档