作者:晓风朗月 | 来源:互联网 | 2022-12-03 16:04
我有一个 dataframe
df = pd.DataFrame({'a':[1,2,3], 'b':[5, '12$sell', '1$sell']})
我想从b列替换$ sell.
所以我尝试了replace()
下面的方法
df['b'] = df['b'].str.replace("$sell","")
但它不会替换给定的字符串,它给我与原始数据帧相同的数据帧.
当我使用它时,它正在工作 apply
df['b'] = df['b'].apply(lambda x: str(x).replace("$sell",""))
所以我想知道为什么它在以前的情况下不起作用?
注意:我尝试只更换$,令人震惊的是它有效.
1> jezrael..:
它是正则表达式元字符(字符串结尾),转义它或添加参数regex=False
:
df['b'] = df['b'].str.replace("\$sell","")
print (df)
a b
0 1 NaN
1 2 12
2 3 1
df['b'] = df['b'].str.replace("$sell","", regex=False)
如果还想要值5,什么是数字,请使用Series.replace
regex = True替换子字符串 - 不触及数值:
df['b'] = df['b'].replace("\$sell","", regex=True)
print (df['b'].apply(type))
0
1
2
Name: b, dtype: object
或者将所有列数据转换为字符串:
df['b'] = df['b'].astype(str).str.replace("$sell","", regex=False)
print (df['b'].apply(type))
0
1
2
Name: b, dtype: object
如果没有可能的缺失值,为了获得更好的性能,请使用list comprehension:
df['b'] = [str(x).replace("$sell","") for x in df['b']]
print (df)
a b
0 1 5
1 2 12
2 3 1