如何标记学生在场/缺席python



我正试图根据用户上次登录的时间戳来标记用户的存在/不存在。如果用户在2020年9月3日午夜至上午9:05之前登录,则他们被标记为在场,否则他们将缺席。

学生时间戳示例

Time                            Present/Absent
2020-09-03T08:55:14-05:00          present
2020-09-03T04:44:46-05:00          present
2020-09-03T09:01:05-05:00          present
2020-09-03T07:12:22-05:00          present
2020-09-03T08:48:53-05:00          present
2020-09-02T16:53:20-05:00          absent
2020-09-02T20:02:28-05:00          absent
2020-09-03T09:01:15-05:00          present
2020-09-03T08:55:03-05:00          present
2020-09-03T09:03:03-05:00          present
2020-09-02T09:13:32-05:00          absent
2020-09-02T23:24:54-05:00          absent
2020-09-02T23:24:58-05:00          absent
2020-09-03T09:03:03-05:00          present
2020-09-02T23:25:01-05:00          absent

这是我的代码


df3['Time'] = df3['Time'].astype(str)
for time in df3['Time']:
if time > '%Y-%m-%d 00:00:00-05:00':
df3['Present/Absent'] = 'absent'
elif  time < '%Y-%m-%d 09:05:00-05:00':
df3['Present/Absent'] = 'present'

但是我有这个

Time                        Present/Absent
2020-09-03T08:55:14-05:00     present
2020-09-03T04:44:46-05:00     present
2020-09-03T09:01:05-05:00     present
2020-09-03T07:12:22-05:00     present
2020-09-03T08:48:53-05:00     present
2020-09-02T16:53:20-05:00     present
2020-09-02T20:02:28-05:00     present
2020-09-03T09:01:15-05:00     present
2020-09-03T08:55:03-05:00     present
2020-09-03T09:03:03-05:00     present
2020-09-02T09:13:32-05:00     present
2020-09-02T23:24:54-05:00     present
2020-09-02T23:24:58-05:00     present
2020-09-03T09:03:03-05:00     present
2020-09-02T23:25:01-05:00     present

df3['Present/Absent'] = 'present'正在为整列分配"present"。同样适用于"缺席"情况。试试这个:

df3['Time'] = df3['Time'].astype(str)
df3['Present/Absent'] = ''
for idx, row in df3.iterrows():
time = row['Time']
if time > '%Y-%m-%d 00:00:00-05:00':
df3.loc[idx, 'Present/Absent'] = 'absent'
elif  time < '%Y-%m-%d 09:05:00-05:00':
df3.loc[idx, 'Present/Absent'] = 'present'

我假设条件按预期工作,df3类似于Student Timestamp示例。

最新更新