【发布时间】:2021-05-02 10:42:35
【问题描述】:
我有一个非常庞大的入院数据集。对于每次入学,我想知道前一年的入学人数。 我的数据集采用数据框形式,包括患者 ID 和住院日期。 我想要一个额外的列来说明上一年的录取人数 - 例如,下表中的“hosp_past_year”列。
| patient_id | hospitalization_date | hosp_past_year |
|---|---|---|
| 1 | Nov 2 2020 | 2 |
| 1 | Dec 20 2019 | 1 |
| 1 | Nov 30 2019 | 1 |
| 1 | Jan 1 2015 | 0 |
| 2 | April 17 2019 | 1 |
| 2 | Nov 5 2018 | 0 |
我已经编写了下面的代码(有效),但很想听听有关使其更简单且运行时间更短的建议。
pat_l=list(df.patient_id.unique())
df["hospitalization_date"]=pd.to_datetime(df["hospitalization_date"])
df_fin=pd.DataFrame()
for pat in pat_l:
df_pat=df[df.patient_id==pat]
df_pat=df_pat.reset_index()
temp_df=pd.DataFrame()
for i in range(len(df_pat)):
temp_df[i]=(df_pat["hospitalization_date"]-df_pat["hospitalization_date"][i]).dt.days
temp_df=np.where(temp_df>=0,0,np.where(temp_df>-366,1,0))
df_pat["hosp_past_year"]=temp_df.sum(axis=0)
df_fin=df_fin.append(df_pat)
任何帮助将不胜感激!
【问题讨论】: