Как определить, встречается ли какая-либо из подстрок в ряде строк, и создать новую переменную, которая их помечает? - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь перейти с STATA на python и воссоздаю некоторые из моих предыдущих работ / кода на python. У меня есть набор данных с 5 переменными, 1 идентификационным номером пациента и 4 кодами внешних повреждений ICD-9 (так называемые электронные коды). (но более 1000 строк, так что ручной ввод действительно возможен).

Я хочу создать переменную, которая идентифицирует людей как поддельных, а не как посредников, идентифицируемых с помощью E-кодов 880.XX-889.xx. Python рассматривает их как объекты.

Я хочу переменную, которая указывает, имел ли пациент код E880.xx-E888.xx в ЛЮБОЙ из 4 переменных экода (значение 1), если они не имеюткод E880.xx-E888.xx присваивает им значение 0, но не присваивает им значение (закодированное как отсутствующее), если отсутствуют 4 значения электронного кода, поскольку они не имели внешних повреждений.

В STATA код довольно прост:

gen fall_inj_ecode=0  
foreach var in ecode1 ecode2 ecode3 ecode4{  
replace fall_inj_ecode=1 if strpos(`var', "E880")>0
replace fall_inj_ecode=1 if strpos(`var', "E881")>0
replace fall_inj_ecode=1 if strpos(`var', "E882")>0
replace fall_inj_ecode=1 if strpos(`var', "E883")>0
replace fall_inj_ecode=1 if strpos(`var', "E884")>0
replace fall_inj_ecode=1 if strpos(`var', "E885")>0
replace fall_inj_ecode=1 if strpos(`var', "E886")>0
replace fall_inj_ecode=1 if strpos(`var', "E887")>0
replace fall_inj_ecode=1 if strpos(`var', "E888")>0

обратите внимание, что есть подкоды (отсюда и часть ".xx"), которые кодируются без точки. Таким образом, код E8801 считается между 880.xx и 889.xx и обозначает травму в результате падения.

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

Вот изображение первых 10 или около того строк данных, и то, что я пытаюсь заставить его выглядеть (синим цветом): Example of what the output should be

Ссылка на мой Github репозиторий, где находится файл .csv для вашего удобства.

Мне кажется, я понял некоторые из моих вопросов. Если я смогу создать 4 новые переменные ecode, которые помечают коды E880.xx - E888.xx как падение (значение 1) и дают всем остальным значение 0. Тогда я могу создать пятую переменную, которая добавляет значения4 новых переменных. если эта новая переменная имеет значение 1 или более, то я знаю, что как часть кода произошла травма в результате падения.

pd1011['fall_injury'] = pd1011['ecodep_pdfall'] + pd1011['ecode1_pdfall'] + pd1011['ecode2_pdfall'] + pd1011['ecode3_pdfall'] + pd1011['ecode4_pdfall']

fall_dictionary = { 0 : 'Non-Fall',
                   1 : 'Fall Injury'}

pd1011['fall_injury'] = pd1011.apply(lambda x: fall_dictionary.get(x['fall_injury']), axis=1)

Однако я не уверен, как бы назначить целочисленное значениек объекту.

Кроме того, если у кого-то есть какие-либо ресурсы, которые могут помочь (будь то книги, веб-сайты, учебники и т. д.), пожалуйста, дайте мне знать!

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