我有一个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_1
和test_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