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

问题描述 投票:5回答:4

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

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

无效

python string pandas dataframe replace
4个回答
14
投票

几乎拥有了。您需要将字典传递给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

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

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

这不是就地操作,因此请不要忘记将结果分配回去。


5
投票

尝试以下方法:

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

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

2
投票

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

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

0
投票

[这只是对COLDSPEED在上面的正确回答的补充评论(我没有足够的声誉直接评论)。如果您希望df上的更改是“永久的”(就地),则还应该在替换方法调用中添加“ inplace = True”参数:

df.replace(x, inplace=True)
© www.soinside.com 2019 - 2024. All rights reserved.