我正在處理一些數據,我必須獲取發生日期。例如,假設我們正在處理醫療數據。每行是來自病人的獨特訪問,儘管同一位病人可以有多行。每行還包含訪問類型的信息,無論是常規還是急診室。熊貓獲取以前的數據幀按日期排列
我需要通過,併爲每一行,獲取病人之前入住急診室的日期。例如,我想下面添加一列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訪問的單獨數據框,並遍歷主數據框,並查找該患者是否存在以前的ER日期,如果他們這樣做,我會先拿出第一個ER日期。 (數據按discharge_date排序)。我有的代碼的一般表示。
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)
上面的代碼工作,但它很慢,我希望能找到更快的方法來做到這一點的幫助。我正在處理的數據集有數十萬行,這是每天必須運行的。
謝謝!
g.sort現在不推薦使用「g.sort_values(by = ['date'])」 – Julius
@Julius謝謝!更新。 –
沒有Probem,你的解決方案救了我的屁股:-) – Julius