我有一个带有名称的数据框
aaaaxxxdddd
dddxbbb
aaaaxxxcccc
我想说字符串是否包含“ xxx”,然后将“ a”替换为“ b”
给予
bbbbxxxdddd
dddxbbb
bbbbxxxcccc
我有2位代码,但不知道如何将它们放在一起
if df['col'].str.contains('xxx')
df['col'] = df['col'].map(lambda x: str.replace(x, 'a',"b"))
答案 0 :(得分:3)
使用DataFrame.loc
并按两个大小的布尔掩码过滤行以提高性能-replace
仅适用于适合的行:
m = df['col'].str.contains('xxx')
df.loc[m, 'col'] = df.loc[m, 'col'].str.replace('a',"b")
print (df)
col
0 bbbbxxxdddd
1 dddxbbb
2 bbbbxxxcccc
另一种解决方案是使用list comprehension
:
df['col'] = [x.replace('a',"b") if 'xxx' in x else x for x in df['col']]