使用panda搜索多列中包含的字符串的有效方法



我有一个pandas数据帧,如下所示

import pandas as pd
import numpy as np
df=pd.DataFrame({'Adm DateTime':['02/25/2012','03/05/1996','11/12/2010','31/05/2012','21/07/2019','31/10/2020'],
's_id':[1,2,3,4,5,6],
'test_string_1':['test','Thalaivar','Superstar','God','Favorite','Rajinikanth'],
'test_string_2':['Rajinikanth','God of Cinema','Favorite','Superstar','Rahman','ARR']})
df['Adm DateTime'] = pd.to_datetime(df['Adm DateTime'])

我想检查的任何列(test_string_1test_string_2(中是否存在子字符串

虽然我可以做一个专栏,如下所示

df['op_flag'] = np.where(df['test_string_1'].str.contains('Rajini|God|Thalaivar',case=False),1, 0)

你能帮助我如何在两列中都这样做吗?

我应该用不同的列名重复上面的代码吗?

有什么方法可以提供我想在代码中检查的列名吗?

您可以使用lambda函数来完成此操作

In [40]: df[['test_string_1', 'test_string_2']].apply(lambda x: x.str.contains('Rajini|God|Thalaivar',case=False)).any(axis=1).astype(int)
Out[40]:
0    1
1    1
2    0
3    1
4    0
5    1
dtype: int64

最新更新