我的dataframe
包含每行的事件,Start
和End
datatime
。
import pandas as pd
import datetime
df = pd.DataFrame({ 'Value' : [1.,2.,3.],
'Start' : [datetime.datetime(2017,1,1,0,0,0),datetime.datetime(2017,1,1,0,1,0),datetime.datetime(2017,1,1,0,4,0)],
'End' : [datetime.datetime(2017,1,1,0,0,59),datetime.datetime(2017,1,1,0,5,0),datetime.datetime(2017,1,1,0,6,00)]},
index=[0,1,2])
df
Out[7]:
End Start Value
0 2017-01-01 00:00:59 2017-01-01 00:00:00 1.0
1 2017-01-01 00:05:00 2017-01-01 00:01:00 2.0
2 2017-01-01 00:07:00 2017-01-01 00:06:00 3.0
我想将连续行的End
和Start
之间的差异小于给定timedelta
的连续行进行分组。
例如这里有5秒的timedelta我想用索引0,1
对行进行分组,并且timedelta为2分钟,它应该在行0,1,2
解决方案是使用.shift()
将连续行与其移位版本进行比较,但是,如果需要合并超过2行的组,我需要多次迭代比较。
由于我的df很大,这不是一个选择。
答案 0 :(得分:1)
我假设您尝试根据时差进行汇总。
marker = 60
df = df.assign(diff=df.apply(lambda row:(row.End - row.Start).total_seconds() <= marker, axis=1))
for g in df.groupby('diff'):
print g[1]
End Start Value diff
1 2017-01-01 00:05:00 2017-01-01 00:01:00 2.0 False
2 2017-01-01 00:06:00 2017-01-01 00:04:00 3.0 False
End Start Value diff
0 2017-01-01 00:00:59 2017-01-01 1.0 True
答案 1 :(得分:1)
buff.end(data.Body);
buff
.pipe(zlib.createGunzip())
.on('error', console.error)
.on('entry', function(entry) {
console.log(entry);
});