首页 > 解决方案 > 挖掘“包含在”条目而不是“等于”的术语

问题描述

我正在做一些数据挖掘。我有一个看起来像这样的数据库(拉出三行):

100324822$10032482$1$PS$BENICAR$奥美沙坦酯$1$口服$UNK$$$Y$$$$021286$$$平板电脑$ 1014687010$10146870$2$SS$BENICAR HCT$氢氯噻嗪\奥美沙坦酯$1$口服$12 25MG 片剂$$$Y$$$$$.5$DF$薄膜包衣片剂$QD 115700162$11570016$5$C$奥美沙坦$奥美沙坦$1$未知$UNK$$$U$U$$$$$$$

我的代码如下所示:

    with open('DRUG20Q4.txt') as fileDrug20Q4:
        drugTupleList20Q4 = [tuple(map(str, i.split('$'))) for i in fileDrug20Q4]
    drug20Q4 = []
    for entryDrugPrimaryID20Q4 in drugTupleList20Q4:
        drug20Q4.append((entryDrugPrimaryID20Q4[0], entryDrugPrimaryID20Q4[3], entryDrugPrimaryID20Q4[5]))
    fileDrug20Q4.close()

    drugNameDataFrame20Q4 = pd.DataFrame(drug20Q4, columns = ['PrimaryID', 'Role', 'Drug Name']) drugNameDataFrame20Q4 = pd.DataFrame(drugNameDataFrame20Q4.loc[drugNameDataFrame20Q4['Drug Name'] == 'OLMESARTAN'])

目前,代码只会提取具有确切名称“OLMESARTAN”的条目,我如何捕获所有变体,例如“OLMESARTAN MEDOXOMIL”等?我不能简单地列出所有的品种,因为有无限多的变化,所以我需要一些能捕捉到任何东西的东西,里面有“OLMESARTAN”这个词。

谢谢!

标签: pythonmining

解决方案


您可以使用str.contains来获取您要查找的内容。

这是一个示例(使用我在文档中找到的一些字符串):

import pandas as pd 
df = pd.DataFrame()
item = 'Return boolean Series or Index based on whether a given pattern or regex is contained within a string of a Series or Index.'
df['test'] = item.split(' ')
df[df['test'].str.contains('de')]

这输出:

    test
4   Index
22  Index.

推荐阅读