计算再入院率

时间:2019-02-10 13:12:32

标签: python python-3.x pandas dataframe

我对Python还是很陌生,我正在尝试计算患者是否在30天内重新入院。

数据为Pandas数据框形式,其中包含患者ID,到达日期,出发日期和状态(出院,入院,未等待)的列。该问题与具有相同要求的上述问题相似,但我需要Python中的代码。

Calculate readmission rate

我只需要一栏再入院(30天再入院状态)。感谢您对代码翻译的任何帮助。预先感谢。

@ anky_91如果我理解上的错误,请纠正我。我的数据中的一些随机示例ex1 ex2 ex3

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

df.groupby('Patient').apply(lambda x : (x['Admission Date'].\
    shift(-1)-x['Discharge date']).dt.days.le(30).astype(int)).reset_index(drop=True)

完整代码

考虑df如下:

   Visit  Patient Admission Date Discharge date
0      1        1     2015-01-01     2015-01-02
1      2        2     2015-01-01     2015-01-01
2      3        3     2015-01-01     2015-01-02
3      4        1     2015-01-09     2015-01-09
4      5        2     2015-04-01     2015-04-05
5      6        1     2015-05-01     2015-05-01


df[['Admission Date','Discharge date']] = df[['Admission Date','Discharge date']].\
                                                apply(lambda x: pd.to_datetime(x))
df = df.sort_values(['Patient','Admission Date']) #Thanks @Jondiedoop

df['Readmit30']=df.groupby('Patient').apply(lambda x : (x['Admission Date'].\
shift(-1)-x['Discharge date']).dt.days.le(30).astype(int)).reset_index(0).drop('Patient',1)
print(df)


   Visit  Patient Admission Date Discharge date  Readmit30
0      1        1     2015-01-01     2015-01-02      1
3      4        1     2015-01-09     2015-01-09      0
5      6        1     2015-05-01     2015-05-01      0
1      2        2     2015-01-01     2015-01-01      0
4      5        2     2015-04-01     2015-04-05      0
2      3        3     2015-01-01     2015-01-02      0

答案 1 :(得分:0)

您也可以尝试这个(不知道为什么上一个为我提供了错误的重新录入标记): 在visit_start_date排序后

visits_pandas_df.groupby('PatientId').apply(lambda x: (((x['visit_start_date'].shift(-1)-x['visit_end_date']).dt.days.shift(1).le(30)) ).astype(int)).values

只有一天差异的访问不计入重新接纳。因此,您还需要检查逻辑。