我已经谷歌搜索了一段时间,并没有找到一个合适的解决方案.我有一个时间序列,有几百万行,结构相当奇怪:
VisitorID Time VisitDuration
1 01.01.2014 00:01 80 seconds
2 01.01.2014 00:03 37 seconds
Run Code Online (Sandbox Code Playgroud)
我想知道在某个时刻网站上有多少人.为此,我必须将这些数据转换为更大的数据:
Time VisitorsPresent
01.01.2014 00:01 1
01.01.2014 00:02 1
01.01.2014 00:03 2
...
Run Code Online (Sandbox Code Playgroud)
但做这样的事情似乎非常低效.我的代码是:
dates = {}
for index, row in data.iterrows():
for i in range(0,int(row["duration"])):
dates[index+pd.DateOffset(seconds=i)] = dates.get(index+pd.DateOffset(seconds=i), 1) + 1
Run Code Online (Sandbox Code Playgroud)
然后我可以将它转换成一个系列并能够重新取样:
result = pd.Series(dates)
result.resample("5min",how="mean").plot()
Run Code Online (Sandbox Code Playgroud)
你能指出我正确的方向吗?
编辑 - -
嗨HYRY这是一个头()
uid join_time_UTC duration
0 1 2014-03-07 16:58:01 2953
1 2 2014-03-07 17:13:14 1954
2 3 2014-03-07 17:47:38 223