1。总结问题
我有一个文本文件和一个特定的字典,其中包含数据帧中的单词。txt文件包含用行分隔的句子(字符串(。
字典中只有一个特定的列与我相关,并且包含我想要与文本匹配的关键字。然后我想在数据帧中打印最佳匹配(我指的是最长的匹配(。
2.描述您尝试了什么
我创建了两个数据帧:一个用于输出,另一个用于导入csv字典:
Output = pd.DataFrame(columns=['stuff','Bestmatch'])
MyDictionary = pd.read_csv('mydic.csv', sep=r't', engine='python', encoding='utf-8')
3.显示一些代码然后我尝试对主要功能进行编码:
def fetchword():
with open (mytext.txt", "w+") as f:
lines = f.readlines()
for value in MyDictionary["substance_name"].values:
在这里,我不确定我能做些什么来完成这个循环。
f.close()
PS:如果MyDictionary
列中有很多匹配项,我想选择最长的一个,并将其打印到新的数据帧中
csv字典文件MyDictionary:的示例
substance_name Quantity
Acetaminophen 3
ibuprofen 4
Levothyroxin 5
Metformin 7
例如,我的文本文件:
Acetaminophen 3x/d for one week
ibuprofen 1/d for 3 days
试试这个:
import pandas as pd
MyDictionary = pd.read_csv('test.csv',delimiter='t', encoding='utf-8')
def fetchword(df):
data=[]
with open ("test.txt", "r") as f:
lines = str(f.readlines())
print(df.columns)
for value in df["substance_name"].values:
data.append([value,lines.count(value), len(value)])
f.close()
data = pd.DataFrame(data, columns=['Word','Count','Length'])
return(data)
out = fetchword(MyDictionary)
输出:
Word Count Length
0 Acetaminophen 1 13
1 ibuprofen 1 9
2 Levothyroxin 0 12
3 Metformin 0 9
然后,您可以随心所欲地过滤out
:
print(out.loc[[out[out['Count']>0]['Length'].argmax()]])
输出:
Word Count Length
0 Acetaminophen 1 13