Добавить строки в Dataframe для каждого числа в диапазоне от двух столбцов, сохраняя при этом несколько других столбцов - PullRequest
0 голосов
/ 31 октября 2018

У меня есть фрейм данных, который содержит диапазоны кодов, которые мне нужно разбить на отдельные строки по кодам в этих диапазонах. Некоторые коды содержат буквы, которые добавляют еще один уровень сложности.

      code_range_start code_range_end  ccs  \
0                61000          61055    1   
1                61105          61106    1   
2                61108          61130    1   
3                61150          61156    1   
4                61250          61315    1   
5                61320          61323    1   
6                61340          61340    1   
7                61345          61440    1   
8                61470          61490    1   
9                61510          61516    1   
10               61518          61530    1   
11               61534          61545    1   
12               61556          61557    1   
13               61570          61576    1   
14               61582          61596    1   
15               61598          61608    1   
16               61615          61616    1   
17               61712          61735    1   
18               61880          61880    1   
19               62161          62164    1   
20               0169T          0169T    2   
21               61107          61107    2   
22               61210          61210    2   
23               62160          62160    2   
24               62180          62258    2   
25               0202T          0202T    3   
26               0274T          0275T    3

Используемый набор данных представляет собой CSV-код медицинских CPT-кодов, связанных с одним кодом медицинского группировщика (ID CCS), и описание этого кода:

https://www.hcup -us.ahrq.gov / toolssoftware / ccs_svcsproc / ccssvcproc.jsp

Я определил строки, в которых диапазоны имеют или не имеют букв. Те, без букв, которые я смог завершить, ссылаясь на следующее:

Добавлять строки в фрейм данных каждый день между двумя столбцами

Мой код выглядит так:

df_noletters_full = pd.concat([pd.Series(r.ccs,
                           range(r.code_range_start, r.code_range_end + 1)) 
                           for r in df_noletters.itertuples()]) \
        .reset_index()
df_noletters_full.columns = ['code','ccs']

Для диапазонов, содержащих буквы, я могу определить, находится ли буква в начале или в конце, удалить букву и извлечь ее в новый столбец 'letter', который будет добавлен после генерации диапазонов.

Проблема, с которой я столкнулся, заключается в том, что приведенному выше коду не нравится второй столбец, когда я пытаюсь сделать то же самое в числовых диапазонах с буквой, извлеченной в качестве второго столбца. Когда я бегу:

df_letters_starts_with_full = pd.concat([pd.Series(r.ccs, r.letter,
                                                   range(r.code_range_start_digits_only, r.code_range_end_digits_only + 1))
                                                    for r in df_letters_starts_with.itertuples()]) \
    .reset_index()

Я получаю следующую ошибку:

TypeError: Index(...) must be called with a collection of some kind, 'C' was passed

У меня фактически была такая же ошибка для числовых диапазонов, когда я пытался сохранить столбец 'ccs', который содержит идентификатор группы и столбец 'ccs description'. Я удалил столбец описания, чтобы заставить его работать, и присоединился к отдельному фрейму данных после идентификатора 'ccs'.

Мне нужно сохранить столбец «ccs» для последующего присоединения и столбец «letter» для последующего добавления к коду. Текущему коду просто не нравится этот второй столбец, я предполагаю, что это потому, что это серия, но я не уверен, что смогу что-то сделать, чтобы сохранить его?

Моя единственная мысль состояла в том, чтобы объединить идентификаторы 'ccs' и столбцы 'letter' в один, запустить код, используя этот единственный столбец, и затем проанализировать их обратно в два столбца. Я уверен, что это будет работать нормально, но я подумал, что должен быть более чистый способ сделать это?

Для дополнительной информации, на этом сайте есть хороший учебник по работе с тем же файлом, но он все в R:

http://healthydatascience.com/ahrq_ccs_cpt.html

Любые советы о том, как я могу изменить существующий код, чтобы сохранить столбец, или я лучше всего объединю их в один столбец, а затем разбью их обратно?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...