我无法分享实际数据。所以我举个例子。 假设我有一个后缀列表 -
Suffix_List = ["Ltd.", "Inc.", "Limited", "Corp.", "AG"]
我有一个包含公司名称的列的数据框。我想用空字符串替换公司名称的后缀。这不应该扭曲公司名称的其余部分。例如:假设公司名称为“CAGE AG”。 “AG”应该从后缀中删除,而不是从公司名称中删除。所以结果应该只是“CAGE”。此外,只有在Suffix_List中出现后缀时才应删除。
现在我正在使用 -
for suffix in Suffix_List:
df['company_name'] = df['company_name'].str.replace( suffix,"")
但这也扭曲了实际的公司名称。
公司名称的样本可以是 - CAGE AG,Wage Limited,Tage Ltd.,Sage Inc
答案 0 :(得分:2)
您可以使用正则表达式替换后缀:
In [11]: re.sub("\s?(" + "|".join(Suffix_List) + ")$", "", "CAGE AG")
Out[11]: 'CAGE'
查看后缀的任何(|
)是否以字符串结尾($
)。
在系列/列上,您可以使用str.replace
:
In [21]: df = pd.DataFrame([["CAGE AG"], ["Stack Exchange Inc."]], columns=["company"])
In [22]: df
Out[22]:
company
0 CAGE
1 Stack Exchange
In [23]: df["company"] = df["company"].str.replace("\s?(" + "|".join(Suffix_List) + ")$", "")
In [24]: df
Out[24]:
company
0 CAGE
1 Stack Exchange