如何检查字符串是否在字典数据帧中



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

最新更新