python - 在数据框中标记用户的出席情况

标签 python pandas dataframe

我有一个数据框,其中记录了用户每天的进入和退出,但用户每天进入的时间不同,例如下面是输入的用户数据

Date    UserID  Intime  Outtime
2018-06-29  73456   2018-06-29 07:30:54  2018-06-29 15:30:13
2018-06-28  73456   2018-06-28 08:29:23  2018-06-28 17:28:31
2018-06-27  73456   2018-06-27 11:26:02  2018-06-27 19:30:09
2018-06-26  73456   2018-06-26 14:20:42  2018-06-26 23:25:38
2018-06-25  73456   2018-06-25 07:31:19  2018-06-25 16:24:26

我需要维护该用户的每小时记录。所以在一张单独的表格中,我有每小时的日期和时间。我需要在用户字段中添加 1,用户所在的时间。例如输出数据。

Hours                User
2018-06-29 0:00:00    
2018-06-29 1:00:00
2018-06-29 2:00:00
2018-06-29 3:00:00
2018-06-29 4:00:00
2018-06-29 5:00:00
2018-06-29 6:00:00
2018-06-29 7:00:00    1
2018-06-29 8:00:00    1
2018-06-29 9:00:00    1
2018-06-29 10:00:00    1
2018-06-29 11:00:00    1
2018-06-29 12:00:00    1
2018-06-29 13:00:00    1
2018-06-29 14:00:00    1
2018-06-29 15:00:00    1
2018-06-29 16:00:00
2018-06-29 17:00:00

我可以创建小时列,但无法标记用户所在小时的出勤情况。

任何帮助将不胜感激。谢谢 !

最佳答案

试试这个:

构建每小时集合

s = pd.date_range(df1.index[0], df1.index[-1]+pd.DateOffset(1), freq='H')
idx = pd.period_range(df1.index[0], df1.index[-1]+pd.DateOffset(1), freq='H')
idx = idx[:-1]

查找索引何时在IntimeOuttime范围内

sol = [int((s[i] >= df1.iloc[j,1] - pd.DateOffset(hours=1)) & (s[i] <= df1.iloc[j,2])) for j in range(len(df1)) for i in range(len(idx))]

使用 numpy 将列表 reshape 为更友好的格式

sol2 = np.array(sol)
sol3 = np.reshape(sol2, (s.shape[0]-1,len(df1)),order = 'F')

构建所需的系列

ans = pd.Series(np.amax(sol3, axis=1),idx.values)

显示结果

print(ans)

输出(最后一天):

2018-06-29 00:00    0
2018-06-29 01:00    0
2018-06-29 02:00    0
2018-06-29 03:00    0
2018-06-29 04:00    0
2018-06-29 05:00    0
2018-06-29 06:00    0
2018-06-29 07:00    1
2018-06-29 08:00    1
2018-06-29 09:00    1
2018-06-29 10:00    1
2018-06-29 11:00    1
2018-06-29 12:00    1
2018-06-29 13:00    1
2018-06-29 14:00    1
2018-06-29 15:00    1
2018-06-29 16:00    0
2018-06-29 17:00    0
2018-06-29 18:00    0
2018-06-29 19:00    0
2018-06-29 20:00    0
2018-06-29 21:00    0

关于python - 在数据框中标记用户的出席情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53124999/

相关文章:

python - 用另一个数据帧迭代更新数据帧的值

python - Django 重定向到自定义 URL

python - 查找嵌套子列表中的值是否大于 Pandas 列中的 X

python - 我不明白为什么我的数据集中的列是 NaN

r - 如何将公式转换为函数,或将公式应用于某些值?

python - 如何根据特定列中的值对 pandas 数据文件中的字符串进行排序?

python - 优化 Python 代码

python - 覆盖 JWT,以便用户可以通过移动设备注册

python - fmin_ncg 未返回优化结果

python - 使用python过滤磁盘上的文件