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

Python 如何用一个值替换多个值,python,string,pandas,dataframe,replace,Python,String,Pandas,Dataframe,Replace,如何将数据“啤酒”、“酒精”、“饮料”、“饮料”仅替换为“饮料” df.replace([“啤酒”、“酒精”、“饮料”、“饮料”]、“饮料”) 不起作用请尝试以下方法: lst = ['Beer','Alcohol','Beverage','Drink'] pat = r"\b(?:{})\b".format('|'.join(lst)) df = df.replace(pat, 'Drink', regexp=True) 你差点就成功了。您需要将字典传递给df.replace df

如何将数据
“啤酒”、“酒精”、“饮料”、“饮料”
仅替换为
“饮料”

df.replace([“啤酒”、“酒精”、“饮料”、“饮料”]、“饮料”)

不起作用

请尝试以下方法:

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

df = df.replace(pat, 'Drink', regexp=True)
你差点就成功了。您需要将字典传递给
df.replace

df

       Col1
0      Beer
1   Alcohol
2  Beverage
3     Drink

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

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

这不是一个就地操作,所以不要忘记将结果重新分配。

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


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

df[['Col1']]=df[['Col1']]替换(dict.fromkeys(['Beer'、'Alcohol'、'Beverage'、'Drink']、'Drink']、'Drink'))

在Python的最新迭代中,您最初使用的方法似乎是有效的

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

应该有用

Ha!我本来打算
df.replace({k:'Drink'代表k在['Beer','alcohold','Beverage','Drink','Drink']})
但是,相反,我学到了
dict.fromkeys
不会将
inplace=True
传递给df.replace,如果需要的话,让它成为一个就地操作?@2load它会,但我不推荐它:不错的一个,只是不知道为什么你的和我的不同,但可以得到相同的结果…对不起,我没有放弃与字符串的工作…你能为将来的研究参考一些链接如果你的问题得到了回答,请奖励那些帮助你的人的努力。接受最有用的答案。你也可以投票表决所有其他有用的答案。请养成习惯,这有助于社区。此代码现在在熊猫身上确实有效,请参见上的示例3
df.replace({'|'.join(['Beer','Alcohol','Beverage','Drink']):'Drink'},regex=True)
df.replace(['Beer','Alcohol','Beverage','Drink'],'Drink', inplace=True)