如何替换B列等于value的A列中的值?

时间:2019-10-15 14:54:41

标签: python pandas numpy replace conditional-statements

如果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/

2 个答案:

答案 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/