3 回答
TA贡献1790条经验 获得超9个赞
您可以构建一个函数并使用应用。
def is_in_flag(val, lst):
for item in lst:
if (item in val):
return 1
return 0
terms = ['x','y']
df['Test_Flag'] = df['Description'].apply(is_in_flag ,args=[terms])
df
或者以你的方式:
terms = ['x','y']
df['Test_Flag'] = 0
for t in terms:
df['Test_Flag']=(( df['Test_Flag'] + df.Description.str.contains(t))>0)*1
df
TA贡献1806条经验 获得超5个赞
我建议使用申请:
import pandas
df = pd.DataFrame({'words':['joy','heX','socks','brain','zebra','sexy']})
ts = ['x','y','z']
df['flag'] = df.words.apply(lambda x: sum(t in x.lower() for t in ts) > 0)
TA贡献1757条经验 获得超8个赞
你可以使用正则表达式
pattern = '|'.join(['({s})'.format(s=s) for s in terms])
df['Flag'] = df.words.str.contains(pattern)
添加回答
举报