我正在尝试用"left“连接两个数据帧,用"item”连接条件。
如果df2没有"equivalent_item",那么我想使用df1 "item“本身。如果df2 "equivalent_item“是null (例如奇异果),那么等效项应该是null,稍后我可以删除该行。
df1:
name item
jack rice
hari banana
mala apples
kin kiwi
Mike salt
fall sugar
yedy pasta
vall fruits df2:
item equivalent_item
rice basmathi
banana delmonte
apples fuji apple
kiwi
pasta barello预期输出:
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 我不得不像下面这样做:
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 namedf1['name'] = df1['name'].apply(equivalent_name)
发布于 2020-02-21 11:19:22
使用df.join()进行左连接
df1.join(df2, ["item"], "left")如果连接列在数据帧中具有不同的名称,则使用。
df1.join(df2, df1["item_1"]=df2["item_2"], "left")这将导致数据帧同时具有item_1和item_2列,您可以删除不需要的列。
https://stackoverflow.com/questions/60331165
复制相似问题