【发布时间】:2026-01-22 21:30:01
【问题描述】:
我已将一些表格导入 pd.dataframe。在数据框中有一列包含公司名称,我想通过删除重复的单词来清理它。
例如:
- "奔驰-奔驰" => "奔驰"
- "特斯拉 123-特斯拉 123" => "特斯拉 123"
- “Apple Store Inc-Apple Store In”=>“Apple Store Inc”
到目前为止,我已经弄清楚了如何使用正则表达式来处理前两种情况。但是,我似乎无法弄清楚如何做第三种情况。
这是我的第三种情况的代码:
df_comp['comp_no_duplicate'] = df_comp['comp_name'].str \
.replace(r'(^\b[A-Z]{1,}.*\b)(.*)-{1}\b\1\b', r'\1\2')
使用这段代码,我得到第三种情况的结果: "Apple Store Inc-Apple Store In" => "Apple Store IncIn"
我如何为这种情况编写正则表达式?
【问题讨论】:
-
总是用
-分隔吗?如果是这样,一个简单的x.split('-')[0]就足够了...... -
df_comp['comp_no_duplicate'] = df_comp['comp_name'].str.replace(r'^(.*)-\1$', r'\1', regex=True)。注意Apple Store Inc-Apple Store In在-之前没有重复字符串。 -
@WiktorStribiżew 是的,有重复的公司名称总是用“-”分隔,但也有其他没有重复的公司名称也有“-”。
-
那么,
r'^(.*)-\1$'有效吗?