Мне нужно отметить месяц с 1, когда пациент был покрыт каким-либо продуктом.Одна доза обеспечивает покрытие на 1 месяц.Также я хотел бы видеть пробелы в освещении.
Еще одна деталь - количество может также влиять на месяцы покрытия.Допустим, количество равно 2, тогда пациент покрывается в течение следующих 2 месяцев.
Сейчас я использую df.loc, который работает с первой дозой, но не могу понять, как рассчитать эти пробелы вохват.
df = pd.DataFrame({'patient':['1','2','3','4','5','6','7'], 'dose1':['A','B','B','A','C','C','C'],
'qty1':[1,2,1,4,1,3,4],
'days_since_last_dose1':[0,0,0,0,0,0,0],
'dose2':['B','A','B','A','C','B','C'],
'qty2':[1,2,1,4,1,3,4],
'days_since_last_dose2':[23,56,120,43,30,15,60],
'dose3':['B','B','B','A','A','C','B'],
'qty3':[3,1,1,2,1,3,4],
'days_since_last_dose3':[44,22,67,150,76,32,21], 'M1':[0,0,0,0,0,0,0], 'M2':[0,0,0,0,0,0,0], 'M3':[0,0,0,0,0,0,0], 'M4':[0,0,0,0,0,0,0], 'M5':[0,0,0,0,0,0,0], 'M6':[0,0,0,0,0,0,0], 'M7':[0,0,0,0,0,0,0], 'M8':[0,0,0,0,0,0,0], 'M9':[0,0,0,0,0,0,0], 'M10':[0,0,0,0,0,0,0], 'M11':[0,0,0,0,0,0,0], 'M12':[0,0,0,0,0,0,0]})
prod_1 = ['A']
prod_2 = ['B']
prod_3 = ['C']
df.loc[(df['dose1'].isin(prod_1)) & (df['qty']==1), ('MONTH1')] = 1
Например, пациент получил Дозу_1 (кол-во = 1), которая покрывала его на 30 дней, и возвращается на Дозу_2 (кол-во = 2) спустя 120 дней.Теперь это должно быть представлено как:
M1 = 1, M2 = 0, M3 = 0, M4 = 0, M5 = 1 (пациент вернулся через 120 дней после первой дозы + двойное количество), M6 = 1, M7 = 0, M8 = 0 и т. Д.