如何用一个值python替换多个值

时间:2017-10-24 21:37:23

标签: python string pandas dataframe replace

如何仅使用'Beer','Alcohol','Beverage','Drink'替换数据'Drink'

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

不起作用

6 个答案:

答案 0 :(得分:10)

几乎拥有它。您需要将字典传递给df.replace

df

       Col1
0      Beer
1   Alcohol
2  Beverage
3     Drink

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

    Col1
0  Drink
1  Drink
2  Drink
3  Drink

这适用于完全匹配和替换。对于部分匹配和子字符串匹配,请使用

df = df.replace(x, regex=True)

答案 1 :(得分:4)

尝试以下方法:

lst = ['Beer','Alcohol','Beverage','Drink']
pat = r"\b(?:{})\b".format('|'.join(lst))

df = df.replace(pat, 'Drink', regexp=True)

答案 2 :(得分:2)

看起来与MaxU的解决方案不同:)

df.replace({'|'.join(['Beer','Alcohol','Beverage','Drink']):'Drink'},regex=True)

答案 3 :(得分:1)

先前的答案有轻微变化: 以下代码替换特定列的值

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

答案 4 :(得分:0)

这只是对COLDSPEED上面的好答案的另一个评论(我没有足够的声誉直接评论)。如果您希望df上的更改为“永久”(就地),您还应该将'inplace = True'参数添加到replace方法调用中:

df.replace(x, inplace=True)

答案 5 :(得分:0)

您最初的方法似乎适用于 Python 的最新版本。

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

应该可以