如何仅用'Beer','Alcohol','Beverage','Drink'
替换数据'Drink'
。
df.replace(['Beer','Alcohol','Beverage','Drink'],'Drink')
无效
您几乎拥有了。您需要将字典传递给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
)
这不是就地操作,因此请不要忘记将结果分配回去。
尝试以下方法:
lst = ['Beer','Alcohol','Beverage','Drink']
pat = r"\b(?:{})\b".format('|'.join(lst))
df = df.replace(pat, 'Drink', regexp=True)
看起来与MaxU的解决方案不同:)
df.replace({'|'.join(['Beer','Alcohol','Beverage','Drink']):'Drink'},regex=True)
[这只是对COLDSPEED在上面的正确回答的补充评论(我没有足够的声誉直接评论)。如果您希望df
上的更改是“永久的”(就地),则还应该在替换方法调用中添加“ inplace = True”参数:
df.replace(x, inplace=True)