我应该怎样去分配一堆二进制虚拟变量?

时间:2014-07-02 14:00:53

标签: python excel time scripting

我有两个电子表格。其中一个是大约20000排病人进入急诊室。每行都有一个日期/时间列,以及单独的日期和单独的时间列。显然,多名患者在同一天进入。另一个电子表格在第一个电子表格中涵盖了每天366个日期和日出和日落时间。

我想要做的是在第一个电子表格中创建一个名为“is_night”的列,如果是白天,则将每个条目编码为0(即患者输入的时间大于日出时间且小于时间的时间对应于患者入院日的日落),如果是夜晚(“其他”条件)则为1

最简单的方法是做什么?进行时间比较是Excel中的一个难点,Python给我解析问题。请注意,我可以访问Python 3(使用Pandas),R,Excel和Access。谢谢!

编辑:以下是每个电子表格的列标题:

Patient Data:  row_id   day_of_week date_in time_in date_out    time_out    complaint   mdassigned  acuity_id   elapsed_time    triage  disp_desc   adm_dec adm_delay   diagnosis   icd date_time_in    date_time_out

Sun Data:  day_number   sunrise_time    sunset_time season  month   day year    is_dst  sunrise_time_dst    sunset_time_dst date    sunrise_date_time   sunset_date_time    sunrise_date_time_dst   sunset_date_time_dst

2 个答案:

答案 0 :(得分:0)

你可以使用熊猫,并试试这样的事情。不知道你的变量和细节,但下面显示的代码应该是可以理解的,你可以根据你的具体情况进行调整

# dates_df is a file with dates and sunrise and sunset times
# patiets_df is a file with patiens data

def get_sunrise(x):
    sunrise = dates_df[dates_df['date'] = x['date']].sunrise_time
    return sunrise

def get_sunset(x):
    sunset = dates_df[dates_df['date'] = x['date']].sunset_time
    return sunset

# add columns for sunrise and sunset to patients_df

patients_df['sunrise']=patients_df.apply(get_sunrise, axis = 1)
patients_df['sunset']=patients_df.apply(get_sunset, axis = 1)

# checking every admission time from patients_df if it is after sunset and before sunrise
patients_df['is_night'] = patients_df.apply(lambda x: x.time < x.sunrise and x.time > x.sunset, axis=1)

答案 1 :(得分:0)

我明白了。我将两个表加载到Access中,根据日期进行了连接,然后在Excel中编写了一个快速if语句并且它有效。