मेरे पास स्पष्ट डेटा के तीन स्तर हैं जिन्हें मुझे ऊपरी श्रेणियों पर दोहराए जाने वाले लेबल के साथ पांडस डेटाफ्रेम में परिवर्तित करने की आवश्यकता है। मेरे पास "मुख्य", "उप", और "तृतीयक" की सूचियां निम्नानुसार हैं:

main_labels = ['Certain infectious and parasitic diseases','Neoplasms']
main_icds = ['A00-B99','C00-D49']
sub_labels = ['Intestinal infectious diseases','Tuberculosis','Malignant neoplasms of lip, oral cavity and pharynx','Malignant neoplasms of digestive organs']
sub_icds = ['A00-A09','A15-A19','C00-C14','C15-C26']
ter_labels = ['Cholera','Typhoid and paratyphoid fevers','Respiratory tuberculosis','Tuberculosis of nervous system','Malignant neoplasm of lip','Malignant neoplasm of base of tongue','Malignant neoplasm of esophagus','Malignant neoplasm of stomach']
ter_icds = ['A00','A01','A15','A17','C00','C01','C15','C16']

चित्रण और उदाहरण के उद्देश्यों के लिए, मुझे उन्हें पंडों के डेटाफ़्रेम में नीचे की तरह दिखने की आवश्यकता है। अगर मैं इसे पूरा कर सकता हूं, तो मैं लेबल मानों में जोड़ सकता हूं।

enter image description here

ऐसा लग रहा था कि यह आसान होगा लेकिन मैं स्टम्प्ड हूं। किसी भी मदद की बहुत सराहना की। मैंने ऐतिहासिक पोस्ट खोजने की कोशिश की लेकिन मैं जो करने की कोशिश कर रहा हूं उसके करीब कुछ भी पाने के लिए सही कीवर्ड खोजने में परेशानी हो रही थी। धन्यवाद!

1
Richard 15 अप्रैल 2020, 17:35

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि टर्नरी श्रेणी से शुरू करने का सबसे अच्छा तरीका है, फिर इसके उप और मुख्य वर्गीकरण खोजें। अजगर अल्फ़ान्यूमेरिक स्ट्रिंग्स पर असमानताओं की अनुमति देता है, इसलिए यह बहुत मजबूत होना चाहिए।

import pandas as pd

main_icds = ['A00-B99','C00-D49']
sub_icds = ['A00-A09','A15-A19','C00-C14','C15-C26']
ter_icds = ['A00','A01','A15','A17','C00','C01','C15','C16']

#split on '-' to get bounds for each category
subs = [sub.split('-') for sub in sub_icds]
mains = [main.split('-') for main in main_icds]

df = pd.DataFrame({'ter_icd':ter_icds})
df['sub_icd'] = [sub_icd for ter in ter_icds 
                     for sub_icd,sub in zip(sub_icds,subs) 
                         if (ter >= sub[0]) & (ter <= sub[1])]
df['main_icd'] = [main_icd for ter in ter_icds 
                      for main_icd,main in zip(main_icds,mains)
                          if (ter >= main[0]) & (ter <= main[1])]
1
EMiller 15 अप्रैल 2020, 15:53