满足一定数量(条件)时如何汇总列子集

时间:2019-01-08 15:21:06

标签: python pandas

我有一个数据帧,如图所示 enter image description here

我想添加非零'ttr'的不同子集的值并分别获取'hour'的值。

结果应类似于:hour:7,ttr:15seconds,hour:7,ttr:25seconds,hour:8,ttr:15seconds等。

困难的部分是当遇到零秒时如何添加“ ttr”列的不同子集。

有人知道如何解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:2)

IIUC对您的df进行过滤,然后使用index将继续时间分为一组

s=df[df.hour!=0]
s=s.reset_index()
s.groupby([s.hour,s['index'].diff().ne(1).cumsum()]).ttr.sum()
Out[389]: 
hour  index
7     1       00:00:15
      2       00:00:25
Name: ttr, dtype: timedelta64[ns]

数据输入

df=pd.DataFrame({'hour':[0,0,7,0,7,7,7],'ttr':[0,0,'00:00:15',0,'00:00:05','00:00:16','00:00:04']})
df.ttr=pd.to_timedelta(df.ttr)