У меня есть фрейм данных, который содержит диапазоны кодов, которые мне нужно разбить на отдельные строки по кодам в этих диапазонах. Некоторые коды содержат буквы, которые добавляют еще один уровень сложности.
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
Любые советы о том, как я могу изменить существующий код, чтобы сохранить столбец, или я лучше всего объединю их в один столбец, а затем разбью их обратно?
Спасибо!