在Python中将所需字符筛选为一列的子字符串,而不是整个字符串

在Python中将所需字符筛选为一列的子字符串,而不是整个字符串,python,pandas,dataframe,Python,Pandas,Dataframe,给定一个小数据集,如下所示: id company 0 1 Reichel-DuBuque 1 2 Jast LLC 2 3 Strosin LLC 3 4 O'Connell, Ortiz and Ullrich 4 5 LLC 5 6

给定一个小数据集,如下所示:

   id                        company
0   1                Reichel-DuBuque
1   2                       Jast LLC
2   3                    Strosin LLC
3   4   O'Connell, Ortiz and Ullrich
4   5                            LLC
5   6                            Ltd
6   7  Schoen, Bauch and Breitenberg
7   8                      Doyle Ltd
我想过滤掉
LLC
Ltd
是子字符串而不是整个字符串的行,我该怎么做
df[df.company.str.contains('LLC | Ltd')]
告诉我:

   id      company
1   2     Jast LLC
2   3  Strosin LLC
4   5          LLC
5   6          Ltd
7   8    Doyle Ltd
但我需要的是这样的:

   id      company
1   2     Jast LLC
2   3  Strosin LLC
7   8    Doyle Ltd

非常感谢。

您可以为测试链接另一个掩码,不等于
的按位

df = df[df.company.str.contains('LLC') & df.company.ne('LLC')]
print(df)
   id      company
1   2     Jast LLC
2   3  Strosin LLC
详细信息

print (dd.company.str.contains('LLC'))
0    False
1     True
2     True
3    False
4     True
Name: company, dtype: bool

print (dd.company.ne('LLC'))
0     True
1     True
2     True
3     True
4    False
Name: company, dtype: bool
编辑:


谢谢,如果需要匹配多个字符(
LLC,ltd.
),那么我应该使用:
df[df.company.str.contains('LLC | ltd.))和df.company.ne(['LLC','ltd.])
,对吗?@ahbon-第二次使用
~df.company.isin(['LLC','ltd.]))
@ahbon-它看起来像是打字错误
ltd.
ltd
你介意看一下这个问题吗。如果可能的话,我想使用
np.where
。@a-Hmm,那么所有列都需要新掩码吗?将
突出显示(x)
更改为
df1=pd.DataFrame(np.where(df.filter(like='*').isna(),'',c1),index=df1.index,columns=df1.columns)
df = df[df.company.str.contains('LLC|Ltd') & ~df.company.isin(['LLC', 'Ltd'])]
print (df)
   id      company
1   2     Jast LLC
2   3  Strosin LLC
7   8    Doyle Ltd