Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to replace multiple values with one value python

How can I replace the data 'Beer','Alcohol','Beverage','Drink' with only 'Drink'.

df.replace(['Beer','Alcohol','Beverage','Drink'],'Drink')

doesn't work

like image 492
Jiayang Zhuo Avatar asked Oct 24 '17 21:10

Jiayang Zhuo


2 Answers

It seems that your initial method of doing it works in the the latest iteration of Python.

df.replace(['Beer','Alcohol','Beverage','Drink'],'Drink', inplace=True)

Should work

like image 144
SuhailY Avatar answered Nov 16 '22 02:11

SuhailY


You almost had it. You need to pass a dictionary to df.replace.

df

       Col1
0      Beer
1   Alcohol
2  Beverage
3     Drink

df.replace(dict.fromkeys(['Beer','Alcohol','Beverage','Drink'], 'Drink'))

    Col1
0  Drink
1  Drink
2  Drink
3  Drink

This works for exact matches and replacements. For partial matches and substring matching, use

df.replace(
    dict.fromkeys(['Beer','Alcohol','Beverage','Drink'], 'Drink'), 
    regex=True
)

This is not an in-place operation so don't forget to assign the result back.

like image 32
cs95 Avatar answered Nov 16 '22 03:11

cs95