我有一个Pandas数据框列,其中包含与字符串McNally, King (XYZ)
类似的元素。我想保留姓氏,名字并删除其他所有内容。因此,清洁后McNally, King (XYZ)
应为McNally, King
。
我尝试过两个功能,但没有得到所需的结果:
df['name'] = df['name'].str.extract(r'\w+\,\s[A-Z][a-z]+', expand=False)
df['name'] = df['name'].replace({r'\w+\,\s[A-Z][a-z]+' : r'\w+\,\s[A-Z][a-z]+'}, regex=True)
第二个代码用正则表达式本身替换子字符串,而第一个代码从字符串中提取名称,但是我想保留名称并删除其他所有名称。
编辑: 样本数据:
Reyes, Rebecca L (XYZ)
Derry, Odd P (XYZ)
Garza, Per-Laura A (MNP)
Fernandez, Rafael Carl (XYZ)
预期产出:
Reyes, Rebecca
Derry, Odd
Garza, Per-Laura
Fernandez, Rafael
我想编辑就地,即修改现有的datafame本身,而不是创建一个新的。
答案 0 :(得分:2)
您可以尝试这样的事情:
df = pd.DataFrame({'name':['McNally, King (XYZ)']}, index=[0])
df['name'].str.extract(r'(\w+,\s\w+)')
输出:
0 McNally, King
Name: name, dtype: object