-2
我試圖創建一個新的字典dDrugs
通過從data
字典(帶有一串字符串值)提取drugs
的列表以及與提取的藥物關聯的密鑰(無論多少個鍵具有相同的藥物作爲值)。我的目標是使用來自dDrugs
字典中的值來創建一個新列在現有大熊貓據幀dFrame
,使用鍵來定位和填充在數據幀相應的記錄。到目前爲止,這裏是我得到的:如何處理錯誤:numpy.float64沒有可迭代和KeyError異常:楠快譯通?
data{
530.0: 'AC FOLLOWED BY Tylenol',
651.0: nan,
692.0: nan,
993.0: 'Penicillin 250mg',
044.0: nan,
055.0: 'septrim GIVEN 2x daily.',
476.0: nan,
817.0: 'penicilin 100MG & ibuprofen 1160MG',
748.0: 'ADVIL;',
258.0: 'Glaxo welc 50mg;',
569.0: nan,
140.0: 'dfafdg ghjgjkgk hgk',
863.0: nan,
504.0: 'Doxicycline',
675.0: 'water'
}
drugs = ['cycline', 'advil', 'penicilin', 'penicillin', 'tylenol', 'ibuprofen']
data = dict([(k, val) for k, val in data.items() if(val)])#this was supposed to clean the dict
data = dict((k, v) for k, v in data.items() if v)#so is this but I still get KeyError nan
dDrugs = {}
for drugsuffix in drugs:
drugre = re.compile(r'([A-Za-z][a-z]{4,}%s)[^a-z]'%(drugsuffix.lower(),))
for key, value in data.items():
for chtxt in data[value]:
for m in drugre.finditer(chtxt+" "):
drugname = m.group(1)
dDrugs[key].append(drugname.lower())
#been stuck here like forever!
#Error
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-118-0a4cff097dc9> in <module>()
7 drugre = re.compile(r'([A-Za-z][a-z]{4,}%s)[^a-z]'%
(drugsuffix.lower(),))
8 for key, value in data.items():
----> 9 for chtxt in data[value]:
10 for m in drugre.finditer(chtxt+" "):
11 drugname = m.group(1)
KeyError: nan
我該如何解決這個問題?並實現我的最終目標?謝謝。
這肯定是最快的解決方案,我已經在這個平臺上收到。非常感謝。我給出了一個反饋,因爲我測試了這一點。 – CodeLearner
你好EFT,嵌套循環替換你提供像變魔術一樣的作品,這讓我的代碼運行速度更快......謝謝你! – CodeLearner
唯一的問題是,它完全適用於全名拼寫的藥物。例如,有許多後綴爲「cycline」的藥物,如doxicycline,tetracycline等。因此,我沒有列出所有的cycline藥物,而是將cycline列入我的藥物列表,並希望代碼能夠將藥物與這樣的後綴。我一直在試圖看看如何調整你的循環來產生這樣的輸出,但一直沒有成功。你可以看一下嗎?謝謝! – CodeLearner