我有以下熊猫系列:
date_time
2018-05-03 07:46:03 1.0
2018-05-03 07:47:03 1.0
2018-05-03 08:33:03 1.0
2018-05-03 08:34:03 1.0
2018-05-03 08:35:03 1.0
它具有DatetimeIndex date_time
。
我需要按date_time
对值进行分组并计算分组数。创建组时应使同一组中date_time
之间的差异应为+/- 1-3分钟。
在上面显示的示例中,我有2个组:
第1组
2018-05-03 07:46:03 1.0
2018-05-03 07:47:03 1.0
第2组
2018-05-03 08:33:03 1.0
2018-05-03 08:34:03 1.0
2018-05-03 08:35:03 1.0
因此答案应该是2。
答案 0 :(得分:1)
您可能希望尝试使用pd.Grouper,date_time必须采用datetime格式。以下时间设置为“ 3T”或3分钟。
df.groupby(pd.Grouper(key='date_time', freq='3T', axis=1)).head(1)
答案 1 :(得分:0)
不确定我是否完全理解您的问题,但是类似的方法可能会帮助您:
df = pd.DataFrame(data={"value":[1,1,1,1,1]},
index=[dt.datetime(2018,5,3,7,46,3), dt.datetime(2018,5,3,7,47,3),
dt.datetime(2018,5,3,8,33,3), dt.datetime(2018,5,3,8,34,3),
dt.datetime(2018,5,3,8,35,3)])
#Groups the data into 3min (180sec) buckets by count
df.resample("180S").count()
#Filter out rows with value 0 (adding to line above)
df.resample("180S").count()["value"].where(lambda x: x > 0)
#Drop NaN values and get length of the remaining df (which should equal your number of groups, in your case 2)
df.resample("180S").count()["value"].where(lambda x: x > 0).dropna().shape[0]
希望这会有所帮助