将非连续的 15 分钟数据重新采样为 pandas 中的每小时分组数据
resample a non-continuous 15-minutes data to an hourly groupped data in pandas
我有一个包含 5 个站点 20 年降水量的数据框。每天 8 小时不连续地收集 15 分钟的观察结果。我想找到总共8小时(早上7点到10点,13点到14点,下午16点到17点)降水量最大的站点和日期。
我想做的是,首先将数据重新采样为每个站点的每小时数据,然后找到每个位置重叠的 8 小时,然后找到最大值。
我的数据框:
time_start
obs_id
station_id
precipition
2000-01-11 07:00:00-05:00
1
st_1
10
2000-01-11 07:30:00-05:00
1
st_1
2
2000-01-11 07:45:00-05:00
1
st_1
1
2000-01-11 09:00:00-05:00
1
st_1
3
2000-01-11 09:15:00-05:00
1
st_1
1
2000-01-11 09:30:00-05:00
1
st_1
0
2000-01-11 09:45:00-05:00
1
st_1
1
2000-01-12 07:00:00-05:00
1
st_1
10
2000-01-12 07:30:00-05:00
2
st_1
2
2000-01-12 07:45:00-05:00
2
st_1
1
2000-01-12 09:00:00-05:00
2
st_1
3
2000-01-12 09:15:00-05:00
2
st_1
1
2000-01-12 09:30:00-05:00
2
st_1
0
2000-01-12 09:45:00-05:00
2
st_1
1
2000-01-11 07:00:00-05:00
1
st_2
10
2000-01-11 07:30:00-05:00
1
st_2
2
2000-01-11 07:45:00-05:00
1
st_2
1
2000-01-11 09:00:00-05:00
1
st_2
3
2000-01-11 09:15:00-05:00
1
st_2
1
2000-01-11 09:30:00-05:00
1
st_2
0
2000-01-11 09:45:00-05:00
1
st_2
1
2000-01-12 07:00:00-05:00
1
st_2
10
2000-01-12 07:30:00-05:00
2
st_2
2
2000-01-12 07:45:00-05:00
2
st_2
1
2000-01-12 09:00:00-05:00
2
st_2
3
2000-01-12 09:15:00-05:00
2
st_2
1
2000-01-12 09:30:00-05:00
2
st_2
0
2000-01-12 09:45:00-05:00
2
st_2
1
我使用了这段代码,但它不起作用。
df_H = df.resample('H', on='time_start', closed='right').sum().reset_index()
我想要一个 table 每个位置都有一个排序时间和降水总和
您可以使用.groupby()
and then resample using DataFrameGroupBy.resample()
按station_id
分组,如下:
df_H = df.groupby('station_id').resample('H', on='time_start', closed='right')['precipition'].sum().reset_index()
结果:
print(df_H)
station_id time_start precipition
0 st_1 2000-01-11 06:00:00-05:00 10
1 st_1 2000-01-11 07:00:00-05:00 3
2 st_1 2000-01-11 08:00:00-05:00 3
3 st_1 2000-01-11 09:00:00-05:00 2
4 st_1 2000-01-11 10:00:00-05:00 0
5 st_1 2000-01-11 11:00:00-05:00 0
6 st_1 2000-01-11 12:00:00-05:00 0
7 st_1 2000-01-11 13:00:00-05:00 0
8 st_1 2000-01-11 14:00:00-05:00 0
9 st_1 2000-01-11 15:00:00-05:00 0
10 st_1 2000-01-11 16:00:00-05:00 0
11 st_1 2000-01-11 17:00:00-05:00 0
12 st_1 2000-01-11 18:00:00-05:00 0
13 st_1 2000-01-11 19:00:00-05:00 0
14 st_1 2000-01-11 20:00:00-05:00 0
15 st_1 2000-01-11 21:00:00-05:00 0
16 st_1 2000-01-11 22:00:00-05:00 0
17 st_1 2000-01-11 23:00:00-05:00 0
18 st_1 2000-01-12 00:00:00-05:00 0
19 st_1 2000-01-12 01:00:00-05:00 0
20 st_1 2000-01-12 02:00:00-05:00 0
21 st_1 2000-01-12 03:00:00-05:00 0
22 st_1 2000-01-12 04:00:00-05:00 0
23 st_1 2000-01-12 05:00:00-05:00 0
24 st_1 2000-01-12 06:00:00-05:00 10
25 st_1 2000-01-12 07:00:00-05:00 3
26 st_1 2000-01-12 08:00:00-05:00 3
27 st_1 2000-01-12 09:00:00-05:00 2
28 st_2 2000-01-11 06:00:00-05:00 10
29 st_2 2000-01-11 07:00:00-05:00 3
30 st_2 2000-01-11 08:00:00-05:00 3
31 st_2 2000-01-11 09:00:00-05:00 2
32 st_2 2000-01-11 10:00:00-05:00 0
33 st_2 2000-01-11 11:00:00-05:00 0
34 st_2 2000-01-11 12:00:00-05:00 0
35 st_2 2000-01-11 13:00:00-05:00 0
36 st_2 2000-01-11 14:00:00-05:00 0
37 st_2 2000-01-11 15:00:00-05:00 0
38 st_2 2000-01-11 16:00:00-05:00 0
39 st_2 2000-01-11 17:00:00-05:00 0
40 st_2 2000-01-11 18:00:00-05:00 0
41 st_2 2000-01-11 19:00:00-05:00 0
42 st_2 2000-01-11 20:00:00-05:00 0
43 st_2 2000-01-11 21:00:00-05:00 0
44 st_2 2000-01-11 22:00:00-05:00 0
45 st_2 2000-01-11 23:00:00-05:00 0
46 st_2 2000-01-12 00:00:00-05:00 0
47 st_2 2000-01-12 01:00:00-05:00 0
48 st_2 2000-01-12 02:00:00-05:00 0
49 st_2 2000-01-12 03:00:00-05:00 0
50 st_2 2000-01-12 04:00:00-05:00 0
51 st_2 2000-01-12 05:00:00-05:00 0
52 st_2 2000-01-12 06:00:00-05:00 10
53 st_2 2000-01-12 07:00:00-05:00 3
54 st_2 2000-01-12 08:00:00-05:00 3
55 st_2 2000-01-12 09:00:00-05:00 2
我有一个包含 5 个站点 20 年降水量的数据框。每天 8 小时不连续地收集 15 分钟的观察结果。我想找到总共8小时(早上7点到10点,13点到14点,下午16点到17点)降水量最大的站点和日期。
我想做的是,首先将数据重新采样为每个站点的每小时数据,然后找到每个位置重叠的 8 小时,然后找到最大值。
我的数据框:
time_start | obs_id | station_id | precipition |
---|---|---|---|
2000-01-11 07:00:00-05:00 | 1 | st_1 | 10 |
2000-01-11 07:30:00-05:00 | 1 | st_1 | 2 |
2000-01-11 07:45:00-05:00 | 1 | st_1 | 1 |
2000-01-11 09:00:00-05:00 | 1 | st_1 | 3 |
2000-01-11 09:15:00-05:00 | 1 | st_1 | 1 |
2000-01-11 09:30:00-05:00 | 1 | st_1 | 0 |
2000-01-11 09:45:00-05:00 | 1 | st_1 | 1 |
2000-01-12 07:00:00-05:00 | 1 | st_1 | 10 |
2000-01-12 07:30:00-05:00 | 2 | st_1 | 2 |
2000-01-12 07:45:00-05:00 | 2 | st_1 | 1 |
2000-01-12 09:00:00-05:00 | 2 | st_1 | 3 |
2000-01-12 09:15:00-05:00 | 2 | st_1 | 1 |
2000-01-12 09:30:00-05:00 | 2 | st_1 | 0 |
2000-01-12 09:45:00-05:00 | 2 | st_1 | 1 |
2000-01-11 07:00:00-05:00 | 1 | st_2 | 10 |
2000-01-11 07:30:00-05:00 | 1 | st_2 | 2 |
2000-01-11 07:45:00-05:00 | 1 | st_2 | 1 |
2000-01-11 09:00:00-05:00 | 1 | st_2 | 3 |
2000-01-11 09:15:00-05:00 | 1 | st_2 | 1 |
2000-01-11 09:30:00-05:00 | 1 | st_2 | 0 |
2000-01-11 09:45:00-05:00 | 1 | st_2 | 1 |
2000-01-12 07:00:00-05:00 | 1 | st_2 | 10 |
2000-01-12 07:30:00-05:00 | 2 | st_2 | 2 |
2000-01-12 07:45:00-05:00 | 2 | st_2 | 1 |
2000-01-12 09:00:00-05:00 | 2 | st_2 | 3 |
2000-01-12 09:15:00-05:00 | 2 | st_2 | 1 |
2000-01-12 09:30:00-05:00 | 2 | st_2 | 0 |
2000-01-12 09:45:00-05:00 | 2 | st_2 | 1 |
我使用了这段代码,但它不起作用。
df_H = df.resample('H', on='time_start', closed='right').sum().reset_index()
我想要一个 table 每个位置都有一个排序时间和降水总和
您可以使用.groupby()
and then resample using DataFrameGroupBy.resample()
按station_id
分组,如下:
df_H = df.groupby('station_id').resample('H', on='time_start', closed='right')['precipition'].sum().reset_index()
结果:
print(df_H)
station_id time_start precipition
0 st_1 2000-01-11 06:00:00-05:00 10
1 st_1 2000-01-11 07:00:00-05:00 3
2 st_1 2000-01-11 08:00:00-05:00 3
3 st_1 2000-01-11 09:00:00-05:00 2
4 st_1 2000-01-11 10:00:00-05:00 0
5 st_1 2000-01-11 11:00:00-05:00 0
6 st_1 2000-01-11 12:00:00-05:00 0
7 st_1 2000-01-11 13:00:00-05:00 0
8 st_1 2000-01-11 14:00:00-05:00 0
9 st_1 2000-01-11 15:00:00-05:00 0
10 st_1 2000-01-11 16:00:00-05:00 0
11 st_1 2000-01-11 17:00:00-05:00 0
12 st_1 2000-01-11 18:00:00-05:00 0
13 st_1 2000-01-11 19:00:00-05:00 0
14 st_1 2000-01-11 20:00:00-05:00 0
15 st_1 2000-01-11 21:00:00-05:00 0
16 st_1 2000-01-11 22:00:00-05:00 0
17 st_1 2000-01-11 23:00:00-05:00 0
18 st_1 2000-01-12 00:00:00-05:00 0
19 st_1 2000-01-12 01:00:00-05:00 0
20 st_1 2000-01-12 02:00:00-05:00 0
21 st_1 2000-01-12 03:00:00-05:00 0
22 st_1 2000-01-12 04:00:00-05:00 0
23 st_1 2000-01-12 05:00:00-05:00 0
24 st_1 2000-01-12 06:00:00-05:00 10
25 st_1 2000-01-12 07:00:00-05:00 3
26 st_1 2000-01-12 08:00:00-05:00 3
27 st_1 2000-01-12 09:00:00-05:00 2
28 st_2 2000-01-11 06:00:00-05:00 10
29 st_2 2000-01-11 07:00:00-05:00 3
30 st_2 2000-01-11 08:00:00-05:00 3
31 st_2 2000-01-11 09:00:00-05:00 2
32 st_2 2000-01-11 10:00:00-05:00 0
33 st_2 2000-01-11 11:00:00-05:00 0
34 st_2 2000-01-11 12:00:00-05:00 0
35 st_2 2000-01-11 13:00:00-05:00 0
36 st_2 2000-01-11 14:00:00-05:00 0
37 st_2 2000-01-11 15:00:00-05:00 0
38 st_2 2000-01-11 16:00:00-05:00 0
39 st_2 2000-01-11 17:00:00-05:00 0
40 st_2 2000-01-11 18:00:00-05:00 0
41 st_2 2000-01-11 19:00:00-05:00 0
42 st_2 2000-01-11 20:00:00-05:00 0
43 st_2 2000-01-11 21:00:00-05:00 0
44 st_2 2000-01-11 22:00:00-05:00 0
45 st_2 2000-01-11 23:00:00-05:00 0
46 st_2 2000-01-12 00:00:00-05:00 0
47 st_2 2000-01-12 01:00:00-05:00 0
48 st_2 2000-01-12 02:00:00-05:00 0
49 st_2 2000-01-12 03:00:00-05:00 0
50 st_2 2000-01-12 04:00:00-05:00 0
51 st_2 2000-01-12 05:00:00-05:00 0
52 st_2 2000-01-12 06:00:00-05:00 10
53 st_2 2000-01-12 07:00:00-05:00 3
54 st_2 2000-01-12 08:00:00-05:00 3
55 st_2 2000-01-12 09:00:00-05:00 2