在python中用字符串匹配替换值?
df: 输出:在python中用字符串匹配替换值?,python,python-3.x,pandas,python-2.7,Python,Python 3.x,Pandas,Python 2.7,df: 输出: Item_Key Item_Name Delivery_Partner Ex_Delivery_Partner 10001 Brush zen zen and company 10002 sandle randv randv ltd 10003 chemical ABC zen and company 10004
Item_Key Item_Name Delivery_Partner Ex_Delivery_Partner
10001 Brush zen zen and company
10002 sandle randv randv ltd
10003 chemical ABC zen and company
10004 chair hank hank solution
10005 shoes zen tour and zen ltd
10006 shoes XYZ tour and zen ltd
10007 ropes delv.com delv.com
10008 ropes hans ltd delv.com and Enterprises
我需要通过在“Ex_Delivery_Partner”中选中名称来替换“Delivery_Partner”名称。
如果没有字符串匹配,则替换为“Ex_Delivery_Partner”。通过或列表理解中的
语句中的测试两列之间的成员资格,然后通过或设置新值:
我已经更新了这个问题,请调查一下,如果我需要“Delivery\u Partner”的短名称(用于其他项目),该怎么办。
Item_Key Item_Name Delivery_Partner Ex_Delivery_Partner
10001 Brush zen zen and company
10002 sandle randv randv ltd
10003 chemical zen zen and company
10004 chair hank hank solution
10005 shoes zen tour and zen ltd
10006 shoes zen tour and zen ltd
10007 ropes delv.com delv.com
10008 ropes delv.com delv.com and Enterprises
mask = df.apply(lambda x: x['Delivery_Partner'] in x['Ex_Delivery_Partner'], 1)
df['Delivery_Partner'] = df['Delivery_Partner'].where(mask, df['Ex_Delivery_Partner'])
print (df)
Item_Key Item_Name Delivery_Partner Ex_Delivery_Partner
0 10001 Brush zen zen and company
1 10002 sandle randv randv ltd
2 10003 chemical zen and company zen and company
3 10004 chair hank hank solution
4 10005 shoes zen tour and zen ltd
5 10006 shoes tour and zen ltd tour and zen ltd
6 10007 ropes delv.com delv.com
mask = [x not in y for x, y in df[['Delivery_Partner', 'Ex_Delivery_Partner']].to_numpy()]
df.loc[mask, 'Delivery_Partner'] = df['Ex_Delivery_Partner']
print (df)
Item_Key Item_Name Delivery_Partner Ex_Delivery_Partner
0 10001 Brush zen zen and company
1 10002 sandle randv randv ltd
2 10003 chemical zen and company zen and company
3 10004 chair hank hank solution
4 10005 shoes zen tour and zen ltd
5 10006 shoes tour and zen ltd tour and zen ltd
6 10007 ropes delv.com delv.com