【发布时间】:2019-04-20 09:44:12
【问题描述】:
我有一个数据框和一个列表
df = pd.DataFrame({'IDs':[1234,5346,1234,8793,8793],
'Names':['APPLE ABCD ONE','APPLE ABCD','NO STRAWBERRY YES','ORANGE AVAILABLE','TEA AVAILABLE']})
kw = ['APPLE ABCD', 'ORANGE', 'LEMONS', 'STRAWBERRY', 'BLUEBERRY', 'TEA COFFEE']
我想创建一个新列flag,这样如果Names 列包含来自kw 的关键字,则标志将为1,否则为0。
预期输出:
IDs Names Flag
0 1234 APPLE ABCD ONE 1
1 5346 APPLE ABCD 1
2 1234 NO STRAWBERRY YES 1
3 8793 ORANGE AVAILABLE 1
4 8793 TEA AVAILABLE 0
我可以使用以下代码获得输出:
ind=[]
for idx, value in df.iterrows():
x = 0
for u in kw:
if u in value['Names']:
ind.append(True)
x = 1
break
if x == 0:
ind.append(False)
df['flag'] = ind
是否有其他方法可以避免 for 循环并提高效率?
【问题讨论】: