我有一个数据框,其中有一列包含个人姓名:

name
Mr. Salmon
Mr Salmon
Ms. Salmon
Mrs. Salmon
Mrs Salmon
...


我想删除所有敬语。我在regex101.com上编译了以下正则表达式,并确认了所有匹配项。

(^[Mm]([Rr]|[Ss]|[Xx]|[Rr][Ss]|[Ii][Ss]+)\.?\s)|(^[Mm][Ii][Ss][Tt][Ee][Rr]\.?\s)|(^[Mm][Ii][Ss]+[Uu][Ss]\.?\s)


我在名称数据框上使用replace方法来删除没有任何正则表达式匹配项。我正在使用以下代码:

names_nohf = names.replace(r'(^[Mm]([Rr]|[Ss]|[Xx]|[Rr][Ss]|[Ii][Ss]+)\.?\s)|(^[Mm][Ii][Ss][Tt][Ee][Rr]\.?\s)|(^[Mm][Ii][Ss]+[Uu][Ss]\.?\s)', regex = True)


但是,这并没有返回所需的名称,并且实际上根本没有进行任何更改。有人可以指出我正确的方向吗?

最佳答案

使用空字符串作为新值

import pandas as pd

data = {'X': ['Mr A', 'Mr B', 'Mr C']}

df = pd.DataFrame(data)
print(df)

df = df.replace('Mr', '', regex=True)
print(df)


结果

      X
0  Mr A
1  Mr B
2  Mr C

    X
0   A
1   B
2   C

关于python - DataFrame.Replace(r'regex',regex = True)不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59637735/

10-17 02:19