我有一个数据框,如下所示:
Name Rating
0 ABC Good
1 XYZ Good @
2 GEH Good
3 ABH *
4 FEW Normal
在这里,我想在Rating
元素中替换,如果它包含@
,则应该替换为Can be improve
,如果它包含*
,然后是Very Poor
。我尝试了以下操作,但它替换了整个字符串。但是我只想替换special char
(如果存在)。但是如果只有special char
的话,它可以解决另一种情况。
import pandas as pd
df = pd.DataFrame() # Load with data
df['Rating'] = df['Rating'].str.replace('.*@+.*', 'Can be improve')
返回
Name Rating
0 ABC Good
1 XYZ Can be improve
2 GEH Good
3 ABH Very Poor
4 FEW Normal
有人可以帮我吗?
答案 0 :(得分:1)
import pandas as pd
df = pd.DataFrame({"Rating": ["Good", "Good @", "*"]})
df["Rating"] = df["Rating"].str.replace("@", "Can be improve")
df["Rating"] = df["Rating"].str.replace("*", "Very Poor")
print(df)
输出:
0 Good
1 Good Can be improve
2 Very Poor
答案 1 :(得分:1)
您替换了整个字符串,因为.*
匹配任何字符零次或多次。
如果特殊值始终位于字符串的末尾,则可以使用:
.str.replace(r'@$', "Can be improve")
.str.replace(r'\*$', "Very Poor")