Как заменить значение в столбце A, где столбец B равен значению? - PullRequest
0 голосов
/ 15 октября 2019

Я хочу заменить начало строки (первые 5 символов) ничем в столбце A, если значение в столбце B равно VendorA. Я больше не получаю замены значения без условия, как указано выше.

Я пробовал следующий код:

    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 ]

1 голос
/ 15 октября 2019
>>> 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/
1 голос
/ 15 октября 2019

Вы можете разделить на '/' и использовать np.where, чтобы указать только на 'A'.

df['Vendor'] = np.where(df['ColumnA'].eq('A'), df['Vendor'].str.split('/').str[1], df['Vendor'])
...