如果B列中的值等于VendorA,我想用A列中的任何内容替换字符串的开头(前5个字符)。在没有上述条件的情况下,我无法再替换一个值。
我尝试了以下代码:
ColumnA Vendor
1 A ABBC/1234
2 B BCCD/1234
3 B 1234
4 C 1234ABBC/
Dataset.ColumnA= Dataset.ColumnA.replace(regex=['ABBC/'], value='')
#This should be the output
ColumnA Vendor
1 A 1234
2 B BCCD/1234
3 B 1234
4 C 1234ABBC/
答案 0 :(得分:1)
您可以在'/'上分割,并使用np.where
仅在'A'上指定。
df['Vendor'] = np.where(df['ColumnA'].eq('A'), df['Vendor'].str.split('/').str[1], df['Vendor'])
答案 1 :(得分:1)
>>> df = pd.DataFrame({'ColumnA':['A','B', 'B', 'C'], 'Vendor':['ABBC/1234','BCCD/1234','1234','1234ABBC/']})
>>> cola = ''.join(df['ColumnA'].values.tolist())
>>> df['Vendor'] = df.apply(lambda row: row['Vendor'].split('/')[1] if row['Vendor'].startswith(cola) else row['Vendor'], axis=1)
>>> df
ColumnA Vendor
0 A 1234
1 B BCCD/1234
2 B 1234
3 C 1234ABBC/