汇总ID和时间序列以进行预测 - 有效的方法

时间:2017-12-04 11:06:25

标签: python r pandas

我有一张如下表格

id time
1 2017-11-01 2:00:00
1 2017-11-01 2:00:20
1 2017-11-01 2:00:40
1 2017-11-01 2:01:00
.
.
.
123 2017-12-21 11:59:59

我想查找每天每个ID的总时间。在R / Python中执行此操作的有效方法是什么?

理想情况下可以使用

id date minutes
1 2017-11-01 25
1 2017-11-01 22
.
.

我不想使用嵌套的for循环来做这件事。有没有更好的方法呢?

我在考虑使用下面的申请,使用每个ID的DF列表

lapply(names(myDF), function(x) {aggregateTime())

1 个答案:

答案 0 :(得分:0)

在python中,您可以使用groupby.firstgroupby.last之类的内容:

groupby = ('id', pd.Grouper(key='time', freq='d'))
begin = df.groupby(groupby ).first().astype('datetime64[ns]')
end = df.groupby(groupby ).last().astype('datetime64[ns]')
diff = (end - begin)['time'] 
diff = ((end - begin)['time'] / pd.Timedelta('1M')).round() # if you want it in minutes

diff可以是Series Timedelta或一系列小吃,具体取决于您的需求

变化

def time_diff(group):
    diff = group['time'].max()- group['time'].min()
    return round(diff / pd.Timedelta('1M'))
df.groupby(groupby).apply(time_diff)