我有一个来自 Kaggle 的数据集,其中包含医疗预约数据。有一个预约日期 (ScheduledDay) 和一个预约日期 (AppointmentDay)。还有患者ID,许多患者进行了多次预约以及是否出现。
我想对相同的患者和他们没有出现的地方(缺席==“是”)进行累积计数之类的事情,但仅限于在预约时已经发生的缺席。
这是我的代码,用于计算每个患者的预订数量,没问题
df.sort_values(by='ScheduledDay', inplace=True)
df['book_count'] = df.groupby('PatientId').cumcount()
但对于我的问题,我不知道如何让它变得如此整洁。我已经完成了,但它没有矢量化,需要循环遍历行。不用说这需要很长时间
final_index = df.index.tolist()[-1]
df['miss_count'] = np.NaN
for i in df['ScheduledDay'].iteritems():
print(f'{final_index} -- {i[0]}')
patient = df.loc[i[0], 'PatientId']
count = df.loc[
(df['AppointmentDay'] < i[1])
& (df['No-show'] == 'Yes')
& (df['PatientId'] == patient)].shape[0]
df.loc[i[0], 'miss_count'] = count
print(f'\n{count}\n')
所以在这种情况下我没有使用 cumcount 因为我不知道如何仅过滤之前发生的日期
然后会有一栏显示患者已预约但在当前预约之前未出现的次数。
慕虎7371278
相关分类