检查熊猫数据框中是否有多个子字符串

ald*_*ado 9 python select substring pandas

我有一个 Pandas 数据框,我想检查某个列的子字符串。目前我有 30 行这样的代码:

df['NAME'].str.upper().str.contains('LIMITED')) |
(df['NAME'].str.upper().str.contains('INC')) |
(df['NAME'].str.upper().str.contains('CORP')) 
Run Code Online (Sandbox Code Playgroud)

它们都与一个or条件相关联,如果其中任何一个为真,则名称是公司的名称而不是个人的名称。

但对我来说,这似乎不是很优雅。有没有办法检查熊猫字符串列中的“此列中的字符串是否包含以下列表中的任何子字符串” ['LIMITED', 'INC', 'CORP']

我找到了 pandas.DataFrame.isin 函数,但这仅适用于整个字符串,不适用于我的子字符串。

Sco*_*ton 10

您可以使用正则表达式,其中“|” 是正则表达式中的“或”:

l = ['LIMITED','INC','CORP']  
regstr = '|'.join(l)
df['NAME'].str.upper().str.contains(regstr)
Run Code Online (Sandbox Code Playgroud)

MVCE:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({'NAME':['Baby CORP.','Baby','Baby INC.','Baby LIMITED
   ...: ']})

In [3]: df
Out[3]: 
           NAME
0    Baby CORP.
1          Baby
2     Baby INC.
3  Baby LIMITED

In [4]: l = ['LIMITED','INC','CORP']  
   ...: regstr = '|'.join(l)
   ...: df['NAME'].str.upper().str.contains(regstr)
   ...: 
Out[4]: 
0     True
1    False
2     True
3     True
Name: NAME, dtype: bool

In [5]: regstr
Out[5]: 'LIMITED|INC|CORP'
Run Code Online (Sandbox Code Playgroud)

  • 在提问之前我已经尝试过了。它能够识别“或”条件,但不能识别“与”。谢谢回复。 (2认同)