2016-10-19 7 views
0

У меня есть наборы два данных, и есть данные в нем, как следует:Как создать в одной категории от 2 Datasets в Python

Набор данных 1:

Country Year Cause Gender Deaths 
2090 2011 A000 1  70340 
2090 2010 A001 2  53449 
2090 2009 A002 1  1731 
2090 2008 A003 2  1270 
2090 2007 A004 1  148 
2310 2011 A000 2  172 
2310 2010 A001 1  24 
2310 2009 A002 2  20 
2310 2008 A003 1  27 
2660 2013 A004 2  21 
2660 2012 A005 1  88 
2660 2011 A006 2  82 

данных 2:

Country Year Cause Gender Deaths 
2090 1999 B529 1  557 
2090 1995 A001 2  234 
2090 1996 B535 1  29 
2090 1997 A002 2  33 
2090 1998 B546 1  3224 
2090 1999 B556 2  850 
2310 1995 B555 1  319 
2310 1996 A003 2  143 
2310 1997 B563 1  251 
2310 1998 B573 2  117 
2660 1997 B561 1  244 
2660 1998 A002 2  115 
2660 1999 A001 1  10 
2660 2000 B569 2  2 

Мне нужно создать категории в кодах столбцов Cause, которые являются причинами смерти. Но мне нужно, чтобы эта категория использовала эти комбинированные причины из обоих наборов данных отдельно, например.

дорожно-транспортных происшествий Категория: Из набора данных 1: A001, A003

дорожно-транспортных происшествий Категория: Из набора данных 2: B569, B555

и причины от обоих они должны быть включены в Категория дорожно-транспортных происшествий.

Они должны быть включены в каждой категории для каждого набора данных (не в сочетании), как: дорожно-транспортные происшествия: A001, A003, B569, B555

Это потому, что сказать, например, А001. В наборе данных 1 A001 предназначен для автомобильных аварий, но в наборе данных 2 A001 означает Heart Attack, и я не хочу Heart Attack в категории дорожно-транспортных происшествий. Но когда категория создается из обоих наборов данных (например, дорожно-транспортные происшествия: A001, A003, B569, B555), тогда A001 из обоих наборов данных включается в категорию дорожных происшествий.

Цель данного вопроса - посмотреть, как разные категории отличаются в течение лет с точки зрения смертности. Я не могу совмещать оба набора данных вручную, а не на Python. Я также не разрешается использовать любой из общих пакетов, таких как панды, Numpy и т.д.

Спасибо за помощь в развитых

ответ

0

Так что мое понимание вашей проблемы (поправьте меня, если я ошибаюсь) , у вас есть два набора данных, которые имеют столбец/причину «Причина». Но кодировка этого столбца «Причина» в двух наборах данных отличается.

В DataSet1, возможно кодирование говорит:

Road Traffic Accidents Category: A001, A003 
Heart Attack Category: C001, C002 #made up encoding 

В Dataset2, возможно кодирование говорит:

Road Traffic Accidents Category: B569, B555 
Heart Attack Category: A001 
Hurricane Cause of Death Category: E941 # made up encoding 

Что вы хотите, чтобы создать последовательную категорию, чтобы вызвать кодирующую отображение, которое работает для два набора данных.

Я лично считаю, что словарь python - это правильная структура данных для этой задачи. Я предполагаю, что вы можете загрузить отображение категории-причины для обоих наборов данных.

data1_cat_cause = {'Road Traffic Accidents': ['A001', 'A003'], 
        'Heart Attack': ['C001', 'C002']} 
data2_cat_cause = {'Road Traffic Accidents': ['B569', 'B555'], 
        'Heart Attack': ['A001'], 
        'Hurricane Cause of Death': ['E941']} 

category_combined = set(data1_cat_cause.keys()) | set(data2_cat_cause.keys()) 
cat_cause_combined = {} 
for category in category_combined: 
    cat_cause_combined[category] = {'Dataset1':data1_cat_cause.get(category),'Dataset2':data2_cat_cause.get(category)} 

Это даст следующую информацию, сохраненную в «cat_cause_combined» переменной:

      Dataset1 encoding  Dataset2 encoding 
Road Traffic Accidents : ['A001', 'A003']  ['B569', 'B555'] 
Heart Attack   : ['C001', 'C002']  ['A001'] 
Hurricane Cause of Death: None     ['E941'] 

Я надеюсь, что я понимаю вашу проблему правильно, и я надеюсь, что это решение решает вашу проблему.

+0

Привет, Большое вам спасибо! Я думаю, вы поняли, что я говорю :) Но когда я пытаюсь, я получаю ошибки.Это на самом деле то, что похоже на дорожно-транспортные происшествия – glh

+0

Dataset1_cat_cause = {'Дорожно-транспортные происшествия': ['V01', 'V02', 'V03', 'V04', 'V05', 'V06', 'V07', ' 'V08', 'V09', 'V10', 'V11', 'V12', 'V13', 'V14', 'V15', 'V16', 'V17', Dataset2_Data_ICD9_cat_cause = {'Дорожно-транспортные происшествия': [ 'B47']} – glh

+0

Я получаю эту ошибку: Файл "", строка 3 Dataset2_Data_ICD9_cat_cause = { 'дорожно-транспортных происшествий': [ 'B47']} ^ SyntaxError: EOL то время как scan string literal – glh