Pandas替换多个单词



df

col
a,b
b
c
b,c

目标

  • a→x、 b→y、 c→z
col 
x,y
y
z
y,z

尝试

df['col']=df['col'].replace({'a':'x','b':'y','c':'z'})

它只适用于一个单词,但像x,y这样的多个单词失败了。

或者您可以尝试使用以下代码:

>>> df['col'].str.split(',', expand=True).fillna('').replace({'a':'x','b':'y','c':'z'}).apply(','.join, axis=1).str.rstrip(',')
0    x,y
1      y
2      z
3    y,z
dtype: object
>>> 

为减法替换添加参数regex=True

df['col']=df['col'].replace({'a':'x','b':'y','c':'z'}, regex=True)
print (df)
col
0  x,y
1    y
2    z
3  y,z

dictionary.get的另一个想法是用拆分的值替换,如果不匹配,则获得原始值,最后通过,:连接回来

d = {'a':'x','b':'y','c':'z'}
df['col']=df['col'].apply(lambda x: ','.join(d.get(y, y) for y in x.split(',')))
print (df)
col
0  x,y
1    y
2    z
3  y,z

最新更新