【发布时间】:2019-12-08 16:08:33
【问题描述】:
我想计算时差。 我不明白为什么我收到了价值 1380.0
我有数据
date user action id
0 2019-12-07 22:52:23 AnonymousUser LOGIN NaN
1 2019-12-07 22:52:25 admin VACANCY 21.0
2 2019-12-07 22:52:28 admin VACANCY 20.0
3 2019-12-07 22:52:31 admin VACANCY 19.0
4 2019-12-07 22:52:35 admin VACANCY 18.0
5 2019-12-07 22:52:38 admin VACANCY 16.0
6 2019-12-07 22:52:42 admin VACANCY 15.0
7 2019-12-07 22:52:45 admin VACANCY 13.0
8 2019-12-07 22:52:48 admin VACANCY 17.0
9 2019-12-07 23:02:12 AnonymousUser VACANCY 16.0
我计算了
class UserInfo:
def __init__(self, date, user, action, user_id):
self.date = date.split()[0]
self.time = date.split()[1]
self.user = user
self.action = action
self.user_id = user_id
self.start_date = None
self.end_date = None
def date_delta(self):
print(self.end_date.split()[1])
print(self.start_date.split()[1])
return datetime.datetime.strptime(self.end_date.split()[1], '%H:%S:%M') - datetime.datetime.strptime(self.start_date.split()[1], '%H:%S:%M')
def __str__(self):
return "{};{};{};{};{}".format(self.date, self.time, self.user, self.action, self.user_id)
然后我填写了dict
users = {}
for row in df.iterrows():
cur_date = row[1]["date"]
cur_user = row[1]["user"]
cur_action = row[1]["action"]
cur_id = row[1]["id"]
if cur_user not in users:
users[cur_user] = UserInfo(cur_date, cur_user, cur_action, cur_id)
users[cur_user].start_date = cur_date
else:
users[cur_user].end_date = cur_date
最后我计算了用户“admin”的时间差
admin = users["admin"]
print(admin.date_delta().total_seconds())
我收到了输出 22:52:48 22:52:25 1380.0
我预计是 13 秒,为什么我收到 1380?
【问题讨论】:
-
我认为是毫秒
-
@Stack 你为什么这么认为?来自文档 >> total_seconds() 返回持续时间中包含的总秒数。
标签: python pandas dataframe datetime