使用pandas的TimeGrouper()以1秒的间隔查找列数 [英] Using pandas' TimeGrouper() to find column counts by intervals of 1 second
本文介绍了使用pandas的TimeGrouper()以1秒的间隔查找列数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
考虑由时间戳记索引的数据帧"data",如下所示:
Consider the dataframe "data" indexed by Timestamp as follow:
Index Receiver Type Retry
1970-01-01 00:00:00.000000000 R1 Data 1
1970-01-01 00:00:00.800000000 R1 Non-Data 1
1970-01-01 00:00:01.000287000 R2 Data 0
1970-01-01 00:00:01.600896000 R2 Data 1
1970-01-01 00:00:02.001388000 R1 Data 1
1970-01-01 00:00:02.004698000 R1 Non-Data 1
1970-01-01 00:00:02.006706000 R2 Data 1
1970-01-01 00:00:02.501351000 R2 Data 1
1970-01-01 00:00:02.810382000 R1 Data 0
1970-01-01 00:00:03.001981000 R1 Data 0
1970-01-01 00:00:03.377116000 R1 Data 0
1970-01-01 00:00:03.701811000 R2 Data 1
1970-01-01 00:00:03.910326000 R2 Data 0
1970-01-01 00:00:03.951355000 R2 Non-Data 1
我想查找Type为"Data"且Retry等于1的所有行,然后以1秒的间隔对索引进行分组,以查找每种接收器类型的计数.
I want to find all rows where Type is "Data" and Retry equals 1 and then group the index in intervals of 1 second to find counts for each Receiver type.
所需的输出为df2:
Index R1 R2
1970-01-01 00:00:00 1 0
1970-01-01 00:00:01 0 1
1970-01-01 00:00:02 1 2
1970-01-01 00:00:03 0 1
推荐答案
可以通过简单的pivot_table
即
ndf = df[df['Type'].eq('Data')].pivot_table(columns=['Receiver'],values='Retry',
index=pd.Grouper(key='Index',freq='s'), aggfunc='sum',fill_value=0)
Receiver R1 R2
Index
1970-01-01 00:00:00 1 0
1970-01-01 00:00:01 0 1
1970-01-01 00:00:02 1 2
1970-01-01 00:00:03 0 1
这篇关于使用pandas的TimeGrouper()以1秒的间隔查找列数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文