如何用一个值替换多个值python
Posted
技术标签:
【中文标题】如何用一个值替换多个值python【英文标题】:how to replace multiple values with one value python 【发布时间】:2018-04-05 20:05:23 【问题描述】:如何将数据 'Beer','Alcohol','Beverage','Drink'
仅替换为 'Drink'
。
df.replace(['Beer','Alcohol','Beverage','Drink'],'Drink')
没用
【问题讨论】:
如果您的问题得到了解答,请奖励那些帮助过您的人。接受最有帮助的答案。您还可以投票支持所有其他有用的答案。请养成习惯,它对社区有帮助。 此代码现在可以在 pandas 中使用,请参见 pandas.pydata.org/pandas-docs/stable/reference/api/… 上的示例 3 【参考方案1】:您的初始方法似乎适用于最新的 Python 迭代。
df.replace(['Beer','Alcohol','Beverage','Drink'],'Drink', inplace=True)
应该工作
【讨论】:
【参考方案2】:较早的答案略有变化: 以下代码替换特定列/列的值
df[['Col1']] = df[['Col1']].replace(dict.fromkeys(['Beer','Alcohol','Beverage','Drink'], 'Drink'))
【讨论】:
【参考方案3】:你几乎拥有它。您需要将字典传递给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
)
这不是就地操作,所以不要忘记将结果分配回去。
【讨论】:
哈!我本来要去df.replace(k: 'Drink' for k in ['Beer','Alcohol','Beverage','Drink'])
但相反,我了解到dict.fromkeys
如果需要,不会将inplace=True
传递给 df.replace 使其成为就地操作?
@2Toad 会但我不推荐它:***.com/a/60020384/4909087【参考方案4】:
看起来与 MaxU 的解决方案不同 :)
df.replace('|'.join(['Beer','Alcohol','Beverage','Drink']):'Drink',regex=True)
【讨论】:
是哪个python版本?【参考方案5】:尝试以下方法:
lst = ['Beer','Alcohol','Beverage','Drink']
pat = r"\b(?:)\b".format('|'.join(lst))
df = df.replace(pat, 'Drink', regexp=True)
【讨论】:
不错的一个,只是不知道为什么你和我的不同,但可以得到相同的结果......对不起,我没有放弃字符串工作......你可以参考一些链接以供将来学习以上是关于如何用一个值替换多个值python的主要内容,如果未能解决你的问题,请参考以下文章