在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