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

Python 使用Pandas,如何用空字符串替换字符串的最后一个单词,而不扭曲字符串的其余部分?,python,pandas,Python,Pandas,我无法共享实际数据。所以我举个例子。 假设我有一个后缀列表- Suffix_List = ["Ltd.", "Inc.", "Limited", "Corp.", "AG"] 我有一个数据框,其中有一列包含公司名称。我想用空字符串替换公司名称的后缀。这不应歪曲公司名称的其余部分。例如:假设公司名称为“CAGE AG”。“AG”应该从后缀中删除,而不是从公司名称中删除。所以结果应该是“笼子”。此外,只有在后缀_列表中存在后缀时,才应删除后缀 现在我正在使用- for suffix in Suff

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

Suffix_List = ["Ltd.", "Inc.", "Limited", "Corp.", "AG"]
我有一个数据框,其中有一列包含公司名称。我想用空字符串替换公司名称的后缀。这不应歪曲公司名称的其余部分。例如:假设公司名称为“CAGE AG”。“AG”应该从后缀中删除,而不是从公司名称中删除。所以结果应该是“笼子”。此外,只有在后缀_列表中存在后缀时,才应删除后缀

现在我正在使用-

for suffix in Suffix_List:
    df['company_name'] = df['company_name'].str.replace( suffix,"")
但这也扭曲了公司的实际名称


样本公司名称可以是-CAGE AG,Wage Limited,Tage Ltd.,Sage Inc

您可以使用正则表达式替换后缀:

In [11]: re.sub("\s?(" + "|".join(Suffix_List) + ")$", "", "CAGE AG")
Out[11]: 'CAGE'
这将查看字符串中是否有(
|
)后缀以(
$
)结尾

在系列/列上,您可以使用:


可以使用正则表达式替换后缀:

In [11]: re.sub("\s?(" + "|".join(Suffix_List) + ")$", "", "CAGE AG")
Out[11]: 'CAGE'
这将查看字符串中是否有(
|
)后缀以(
$
)结尾

在系列/列上,您可以使用:


如何将条件添加到:df[“company”]=df[“company”].str.replace(“\s”(“+”|“.join(Suffix_List)+“$”,”),以便它不会扭曲单个单词companys。例如,公司名称为“锌”。从这里删除INC是不正确的,因为这样留下的公司名称只会是“Z”,这是错误的。@user6461192可能需要空格?e、 g.开始时使用
\s+
而不是
\s?
谢谢。它确实奏效了。如果你能告诉我单词中正则表达式的含义,那就太好了。df[“company”]=df[“company”].str.replace(“\s?”(“+”|“).join(后缀列表)+“$”,”)我还有一个类似的问题要问你。我有两个相框。一个有公司名,另一个有域名。对于少数公司来说,域名有时是空的。s=s.to_frame()s.columns=['company_name']s1=s1.to_frame()s1.columns=['domain']。我想将它们合并到另一个帧中。但在这样做的同时,域名和公司名称之间的匹配是错误的。x=pd.merge(第三帧,s,left_index=True,right_index=True)。reset_index(drop=True)y=pd.merge(x,s1,left_index=True,right_index=True)。reset_index(drop=True)@user6461192请作为新问题提问。格式会更好,并且会有更多的人可以查看它(不仅仅是我)。:)如何将条件添加到:df[“company”]=df[“company”].str.replace(“\s”(“+”|“.join(Suffix_List)+“$”,”),以便它不会扭曲单个单词companys。例如,公司名称为“锌”。从这里删除INC是不正确的,因为这样留下的公司名称只会是“Z”,这是错误的。@user6461192可能需要空格?e、 g.开始时使用
\s+
而不是
\s?
谢谢。它确实奏效了。如果你能告诉我单词中正则表达式的含义,那就太好了。df[“company”]=df[“company”].str.replace(“\s?”(“+”|“).join(后缀列表)+“$”,”)我还有一个类似的问题要问你。我有两个相框。一个有公司名,另一个有域名。对于少数公司来说,域名有时是空的。s=s.to_frame()s.columns=['company_name']s1=s1.to_frame()s1.columns=['domain']。我想将它们合并到另一个帧中。但在这样做的同时,域名和公司名称之间的匹配是错误的。x=pd.merge(第三帧,s,left_index=True,right_index=True)。reset_index(drop=True)y=pd.merge(x,s1,left_index=True,right_index=True)。reset_index(drop=True)@user6461192请作为新问题提问。格式会更好,并且会有更多的人可以查看它(不仅仅是我)。:)