我有一个熊猫数据框,其中显示了一些有关发生的事件的信息。基本上就是这样
Timestamp Event Code Prev Event Code State
2018-01-01T06:45:04.691 0 138 1
2018-01-01T06:44:33.678 138 0 21
2017-12-31T06:32:06.691 0 138 21
2017-12-31T06:31:39.687 138 0 21
2017-12-30T06:19:20.688 0 138 1
我想对该数据帧进行重新采样,以使时间戳分隔为10分钟,并且在该10分钟间隔中发生的事件计数。我想要这样的输出
Timestamp 0_count 138_count
fifth 10 min 2 2
fourth 10 min 3 0
third 10 min 5 0
second 10 min 1 1
first 10 min 0 2
我刚刚给了占位符时间戳,而不是Timestamp
列中的实际输出。实际应该有10个薄荷分隔的时间戳。
我不知道如何解决这个问题。我认为必须有一些有效的方法,而不是一些Pandas
中复杂的循环和代码。
为了重新生成示例数据帧,可以使用此代码。
event_df = pd.DataFrame()
event_df['Timestamp'] = ['2018-01-01T06:45:04.691', '2018-01-01T06:44:33.678',
'2017-12-31T06:32:06.691', '2017-12-31T06:31:39.687',
'2017-12-30T06:19:20.688']
event_df['Event Code'] = [ 0, 138, 0, 138, 0]
event_df['Prev Event Code'] = [138, 0, 138, 0, 138]
event_df['State'] = [ 1, 21, 21, 21, 1]
答案 0 :(得分:3)
将时间戳记设置为数据帧索引:
event_df.index = pd.to_datetime(event_df.Timestamp)
现在,您可以重新采样:
count_138 = (event_df['Event Code']==138).astype(int)\
.resample('10 min').sum()
count_0 = (event_df['Event Code']==0).astype(int)\
.resample('10 min').sum()
并根据需要合并结果:
pd.DataFrame({'count_0': count_0, 'count_138': count_138})