有没有一种方法可以将列表匹配到其他列表?
is there a method to match list into other?
我有一个像这样的数据框:
target ; terms
Sport ; Football,Handball, Tennis
Mécanique ; voiture, moto, tracteur, bus
Technologies; ordinateur, téléphone,tablette, radio, écouteur
在程序输入中我有:
list_terms= ['Football','Handball','ordinateur','tablette','Tennis']
预期输出:
targets : Sport,Technologies
您可以在行上使用 apply()
并检查 terms
列是否在条目列表中有任何值。
def check(row):
targets = [term for term in row['terms'].split(',') if term in entry_list]
if len(targets) > 0:
return row['target'] + ' ({:.2f})'.format(len(targets)/len(entry_list))
else:
return np.nan
print(df.apply(check, axis=1).dropna().tolist())
"""
['Sport (0.50)', 'Technologies (0.33)']
"""
如果你不想要目标后的概率,你可以使用
def check(row):
targets = [term for term in row['terms'].split(',') if term in entry_list]
return len(targets) > 0
print(df[df.apply(check, axis=1)]['target'].tolist())
"""
['Sport', 'Technologies']
"""
我有一个像这样的数据框:
target ; terms
Sport ; Football,Handball, Tennis
Mécanique ; voiture, moto, tracteur, bus
Technologies; ordinateur, téléphone,tablette, radio, écouteur
在程序输入中我有:
list_terms= ['Football','Handball','ordinateur','tablette','Tennis']
预期输出:
targets : Sport,Technologies
您可以在行上使用 apply()
并检查 terms
列是否在条目列表中有任何值。
def check(row):
targets = [term for term in row['terms'].split(',') if term in entry_list]
if len(targets) > 0:
return row['target'] + ' ({:.2f})'.format(len(targets)/len(entry_list))
else:
return np.nan
print(df.apply(check, axis=1).dropna().tolist())
"""
['Sport (0.50)', 'Technologies (0.33)']
"""
如果你不想要目标后的概率,你可以使用
def check(row):
targets = [term for term in row['terms'].split(',') if term in entry_list]
return len(targets) > 0
print(df[df.apply(check, axis=1)]['target'].tolist())
"""
['Sport', 'Technologies']
"""