使用Pandas,如何用空字符串替换字符串的最后一个单词而不扭曲字符串的其余部分?

时间:2016-06-13 19:04:55

标签: python pandas

我无法分享实际数据。所以我举个例子。 假设我有一个后缀列表 -

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

1 个答案:

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