我正在尝试将时间戳字段与另一个包含多个字段的列聚合为1小时间隔。
数据集-
df=pd.read_excel("<....>.xlsx")
df.head(10)
timestamp device value
1 2021-01-31 01:02:33+00:00 transPRD-client2 0.27
2 2021-01-31 01:04:34+00:00 transPRD-data3 2.41
5 2021-01-31 01:07:38+00:00 transPRD-client2 0.31
6 2021-01-31 01:09:39+00:00 transPRD-data3 2.20
9 2021-01-31 01:12:38+00:00 transPRD-client2 0.33
10 2021-01-31 01:14:39+00:00 transPRD-data3 1.70
13 2021-01-31 01:17:38+00:00 transPRD-client2 0.23
14 2021-01-31 01:19:39+00:00 transPRD-data3 1.89
17 2021-01-31 01:22:41+00:00 transPRD-client2 0.18
18 2021-01-31 01:24:41+00:00 transPRD-data3 1.62
21 2021-01-31 01:27:41+00:00 transPRD-client 0.22
我尝试了下面的代码,时间戳以5分钟的间隔进行聚合,但唯一的值出现在";设备";柱未在其他设备上聚合数据。
df1=df.set_index('timestamp').resample("1h").max().reset_index()
df1
timestamp device value
0 2021-01-31 01:00:00+00:00 transPRD-data3 2.90
1 2021-01-31 02:00:00+00:00 transPRD-data3 2.83
2 2021-01-31 03:00:00+00:00 transPRD-data3 3.64
3 2021-01-31 04:00:00+00:00 transPRD-data3 2.06
4 2021-01-31 05:00:00+00:00 transPRD-data3 1.84
您可以使用重采样为聚合添加groupby
:
df1=df.set_index('timestamp').groupby('device')['value'].resample("1h").max().reset_index()
print (df1)
device timestamp value
0 transPRD-client 2021-01-31 01:00:00+00:00 0.22
1 transPRD-client2 2021-01-31 01:00:00+00:00 0.33
2 transPRD-data3 2021-01-31 01:00:00+00:00 2.41