How can I replace the data 'Beer','Alcohol','Beverage','Drink' with only 'Drink'.
df.replace(['Beer','Alcohol','Beverage','Drink'],'Drink') doesn't work
25 Answers
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.
3Try the following approach:
lst = ['Beer','Alcohol','Beverage','Drink'] pat = r"\b(?:{})\b".format('|'.join(lst)) df = df.replace(pat, 'Drink', regexp=True) 1Looks like different from MaxU's solution :)
df.replace({'|'.join(['Beer','Alcohol','Beverage','Drink']):'Drink'},regex=True) 1It 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
Slight change in earlier answers: Following code Replacing values of specific column/Columns
df[['Col1']] = df[['Col1']].replace(dict.fromkeys(['Beer','Alcohol','Beverage','Drink'], 'Drink'))