如何用一个值替换多个值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的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何用中位数逐列替换缺失值

如何用熊猫(python)中的其他值替换NAN [重复]

Python - 如何用不同的值替换相邻的列表元素

如何用python中的方程替换数据框中的缺失值

如何用另一个数组值替换javascript中的数组值?

如何用python中其他数据帧中的条目替换一个数据帧中列的丢失条目?