【发布时间】:2019-07-29 22:32:46
【问题描述】:
我基本上是在尝试从 DataFrame 下方创建随时在办公室的员工数量:
df = pd.DataFrame({
'Emp_id': [121,321,451,121,
451,451,321,755],
'TimeStamp': ['29-07-2019 08:55:55','29-07-2019 09:02:55','29-07-2019 09:05:50','29-07-2019 10:05:50',
'29-07-2019 10:07:50','29-07-2019 10:10:10','29-07-2019 10:20:10','29-07-2019 11:00:00'],
'Status': ['IN','IN','IN','OUT','OUT','IN','OUT','IN']
})
df
Emp_id TimeStamp Status
0 121 29-07-2019 08:55:55 IN
1 321 29-07-2019 09:02:55 IN
2 451 29-07-2019 09:05:50 IN
3 121 29-07-2019 10:05:50 OUT
4 451 29-07-2019 10:07:50 OUT
5 451 29-07-2019 10:10:10 IN
6 321 29-07-2019 10:20:10 OUT
7 755 29-07-2019 11:00:00 IN
我解决这个问题的方法:将每个“Emp_id”分组并找到它的 max(TimeStamp) 条目。从中,如果我可以过滤“IN”状态,然后计算所有这些将是仍在办公室的员工人数。
time_entry = df[['Emp_id','TimeStamp']].groupby(['Emp_id']).max()['TimeStamp']
Final_Status = []
for i in time_entry:
Final_Status.append(df.loc[df['TimeStamp'] == i, ['Status']])
Final_Status
>> output
[ Status
3 OUT, Status
6 OUT, Status
5 IN, Status
7 IN]
问题:
我得到一个奇怪的“Final_Status”列表。 它具有列表值的标题和索引
[状态 3 输出,状态 6 输出,状态 5 IN,状态 7 英寸]
这并不能让我从列表中计算“IN”,即
Final_Status.count('IN') 不工作。
也感谢任何其他更聪明的方法来解决这个问题。
【问题讨论】:
标签: python python-3.x list