I have a dataframe:
df = pd.DataFrame({'id' : ['abarth 1.4 a','abarth 1 a','land rover 1.3 r','land rover 2',
'land rover 5 g','mazda 4.55 bl'],
'series': ['a','a','r','','g', 'bl'] })
'id': ['abarth 1.4','abarth 1','land rover 1.3','land rover 2','land rover 5', 'mazda 4.55']
df.id = df.apply(lambda x: x['id'].replace(x['series'], ''), axis =1)
'id': ['brth 1.4','brth 1','land ove 1.3','land rover 2','land rover 5', 'mazda 4.55']
df.id = df.apply(lambda x: x['id'].replace(r'\b' + x['series'], ''), axis =1)
Use str.split
and str.get
and assign using loc
only where df.make == ''
df.loc[df.make == '', 'make'] = df.id.str.split().str.get(0)
print df
id make
0 abarth 1.4 abarth
1 abarth 1 abarth
2 land rover 1.3 rover
3 land rover 2 rover
4 land rover 5 rover
5 mazda 4.55 mazda