我有两个数据帧,如:
df1:
df2:
我正在尝试将任何术语与文本匹配
MyCode:
import sys,os
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import csv
import re
# data
data1 = {'termID': [1,55,341,41,5685], 'term':['Cardic Arrest','Headache','Chest Pain','Muscle Pain', 'Knee Pain']}
data2 = {'textID': [25,12,52,35], 'text':['Hello Mike, Good Morning!!',
'Oops!! My Knee pains!!',
'Stop Music!! my head pains',
'Arrest Innocent!!'
]}
#Dataframes
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# Matching logic
matchList=[]
for index_b, row_b in df2.iterrows():
for index_a, row_a in df1.iterrows():
if row_a.term.lower() in row_b.text.lower() :
#print(row_b.text, row_a.term)
matchList.append([row_b.textID,row_b.text ,row_a.term, row_a.termID] )
cols = ['textID', 'text,','term ','termID' ]
d = pd.DataFrame(matchList, columns = cols)
print(d)
这只给了我一行作为输出:
我有两个问题需要解决:
解决这两个问题的最佳方法是什么
我有问题1的快速解决方案,但没有优化。 你只得到一场比赛,因为“膝盖疼痛”是df1中唯一完整出现的术语。 我已经修改了if语句,从df2中分割文本,并检查列表中是否有匹配项。 同意@jakub的观点,有一些库可以更快地完成这项工作
输出
相关问题 更多 >
编程相关推荐