如何在Pandas中用src.replace方法替换值?

mwkjh3gx  于 2022-11-20  发布在  其他
关注(0)|答案(1)|浏览(116)

我想替换某些列中值。
数据表示例如下,
数据表的名称为df

column1  column2
aaaa     cup
bbbb     coffee
cccc     juice
dddd     tea

我想下面这个结果

column1  column2
aaaa     pink 
bbbb     brown 
cccc     orange
dddd     white

所以我试了下面这个

df['column2'] = df['column2'].str.replace('cup', 'pink')
df['column2'] = df['column2'].str.replace('coffee', 'brown')
df['column2'] = df['column2'].str.replace('juice', 'orange')
df['column2'] = df['column2'].str.replace('tea', 'white')

我得到了这个代码的结果,但我认为它是如此混乱的代码
所以我试了这个,

change_word = {
     'cup':'pink'    ,'coffee':'brown',
     'juice':'orange','tea':'white'
 }
df['column2'].str.replace(change_word, inplace=True)

但是它不起作用。string.replace方法不是有一个可以一次转换所有内容函数吗?
我尝试了.replace方法,但是对于.replace方法,整个字符必须匹配。所以结果与我想要的结果有点不同。
有什么想法吗?

pengsaosao

pengsaosao1#

我们可以尝试使用带有回调函数的str.replace

change_word = {
    'cup':'pink'    ,'coffee':'brown',
    'juice':'orange','tea':'white'
}
regex = r'\b(?:' + r'|'.join(change_word.keys()) + r')\b'
df["column2"] = df["column2"].str.replace(regex, lambda m: change_word[m.group()], regex=True)

如果您确定第二列中的每个值都将出现在字典中,则还可以使用以下简化版本:

df["column2"] = df["column2"].str.replace(r'\w+', lambda m: change_word[m.group()], regex=True)

相关问题