2016-06-19 71 views
2

我试图找到最好的方法来与Python和大熊猫进行简单的时间间隔分析。这只是为了好玩,所以请随时解释答案,以帮助我了解更多。用熊猫进行时差分析的最佳方法是什么?

我开始时会产生一些随机数据。首先是两个用户在4个会话的总时间段内时间戳记频率为20秒的日期。用户是123和345

这里的仿真是快照每20秒钟,看看用户是否在线。

import pandas as pd 

session_one = pd.date_range('2016-01-01', periods=100, freq='20S') 
session_two = pd.date_range('2016-02-01', periods=75, freq='20S') 
session_three = pd.date_range('2016-01-01', periods=125, freq='20S') 
session_four = pd.date_range('2016-02-01', periods=25, freq='20S') 

user_one = [session_one, session_two] 
user_two = [session_three, session_four] 

data = [] 

for sessions in user_one: 
    for dates in sessions: 
     data.append([123,dates]) 

for sessions in user_two: 
    for dates in sessions: 
     data.append([345,dates]) 

# Make our dataframe with our randomly generated data 
df = pd.DataFrame(data=data, columns=['ID', 'Timestamp']) 

努力实现

我要测量每个用户记录之间的时间间隔,并追加回来的纪录。

SQL方法

我有一个很好的SQL方法,但似乎无法复制加盟ontop的数据集彼此,并与大熊猫正确抵消倍。例如,做一个熊猫合并(加入)喜欢这样:

df['Timestamp'] + datetime.timedelta(0,20) 

回答

1

我觉得你每个UserIDdiff需要groupby

df['diff'] = df.groupby('UserID')['Timestamp'].diff() 
+0

如何容易,这是耶稣。 * bonk * – Fastidious

+1

我不确定,因为问题似乎更复杂。祝你好运! – jezrael

+0

是的,没有想到.diff()会遍历下一个记录,以显示时间差,而不必像在SQL中那样轮换时间来执行类似DATEDIFF(SECONDS,field1,field2)的操作。 – Fastidious

相关问题