我正在处理一些数据,需要获取发生日期。例如,我们正在处理医疗数据。每行都是患者的独特就诊记录,尽管同一患者可能有多个记录。每行还包含有关访问类型的信息,无论是例行检查还是急诊室。
我需要遍历每一行,并获取该就诊之前患者上次入院急诊室的日期。例如,我想添加一个名为previous_er_discharge_date的列:
我需要遍历每一行,并获取该就诊之前患者上次入院急诊室的日期。例如,我想添加一个名为previous_er_discharge_date的列:
visit_id patient_id discharge_date visit_type previous_er_discharge_date
1 abc 2014-05-05 in-patient 2014-05-01
2 abc 2014-05-01 emergency NaT
3 def 2014-04-18 in-patient NaT
4 def 2014-03-12 in-patient 2014-02-12
5 def 2014-02-12 emergency NaT
我已经有一个东西在运行,但速度非常慢。基本上,我仅创建了一个仅包含急诊访问的单独数据框,并遍历主数据框,查找该患者是否存在先前的急诊日期,如果存在,则取第一个日期。(数据按出院日期排序)。以下是我所拥有的代码的一般表示。
er_visits = main_data[main_data.visit_type=='emergency']
prev_dates = []
for index, row in main_data.iterrows():
dates = er_visits.discharge_date[(er_visits.patient_id==row.patient_id) &
(er_visits.discharge_date < row.discharge_date)].values
if len(dates) > 0:
prev_dates.append(dates[0])
else:
prev_dates.append(pd.NaT)
上述代码可以工作,但速度较慢,我希望能够得到帮助,找到更快的方法来解决这个问题。我处理的数据集有几十万行,而且这是每天都必须运行的任务。
谢谢!