替换熊猫数据框的列数据中的部分字符串/字符

时间:2018-07-23 07:08:10

标签: python string pandas dataframe replace

我有一个数据框,如下所示:

    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

有人可以帮我吗?

2 个答案:

答案 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")