如果第 1 列不包含列表中的任何子字符串,则与清理后的第 2 列合并到一个新列中

If column 1 does not contain any substrings from list, combine with a cleaned column 2 into a new column

我的处境很艰难,我需要执行多个操作才能获得新列。我有一个子字符串列表。如果 'company' 列不包含列表中的任何子字符串,我必须将 'compnay' 和 'city' (没有数字)合并到 'new' 列中。相反,如果有子字符串匹配,'new' 将 return 'company' 列。

子字符串列表

list=['co','co.','ltd','ltd.','limited','inc','inc.']

当前数据帧

City              Company
10001 New York    Nike ltd
Paris             Louis Vuitton
689 Tokyo         Nissan inc.
Milan             Ferrari co
999 Hong Kong     Li&Fung 
Vancouver         Lululemon
Seoul             Samsung limited

期望的输出

City              Company               New
10001 New York    Nike Ltd              Nike Ltd
2345 Paris        Louis Vuitton         Louis Vuitton, Paris
689 Tokyo         Nissan inc.           Nissan inc.
Milan             Ferrari co            Ferrari co
999 Hong Kong     Li&Fung               Li&Fung, Hong Kong
Vancouver         Lululemon             Lululemon, Vancouver
Seoul             Samsung limited       Samsung Limited

提前致谢!感谢您的帮助!!

使用 pandas.Series.wherestr.containsextract

l=['co','co.','ltd','ltd.','limited','inc','inc.']
s = df["Company"]
city = df["City"].str.extract("(\D+)",expand=False).str.strip()
df["new"] = s.where(s.str.contains("|".join(l)), 
                    lambda x:x+", "+city)
print(df)

打印(df)

输出:

             City          Company                   new
0  10001 New York         Nike ltd              Nike ltd
1           Paris    Louis Vuitton  Louis Vuitton, Paris
2       689 Tokyo      Nissan inc.           Nissan inc.
3           Milan       Ferrari co            Ferrari co
4   999 Hong Kong          Li&Fung   Li&Fung,  Hong Kong
5       Vancouver        Lululemon  Lululemon, Vancouver
6           Seoul  Samsung limited       Samsung limited