I have timeseries data that looks like this:
JavaScript
x
10
10
1
datetime generation
2
2022-01-31 00:00 1234
3
2022-01-31 00:15 4930
4
2022-01-31 00:30 2092
5
2022-01-31 00:45 20302
6
2022-01-31 01:00 483
7
2022-01-31 01:15 4924
8
2022-01-31 01:30 5970
9
2022-01-31 01:45 3983
10
I would like to downsample my data from 15-minute frequencies to 1-hour frequencies. So, the first 4 rows above would be summed under 00:00 timestamp, then next 4 rows would be combined under 01:00.
JavaScript
1
4
1
datetime generation
2
2022-01-31 00:00 28558
3
2022-01-31 01:00 15360
4
Is there an efficient way to make this happen?
Advertisement
Answer
Look at pandas.DataFrame.resample
JavaScript
1
12
12
1
import pandas as pd
2
df = pd.DataFrame({
3
'datetime':
4
["2022-01-31 00:00:00","2022-01-31 00:15:00","2022-01-31 00:30:00",
5
"2022-01-31 00:45:00","2022-01-31 01:00:00","2022-01-31 01:15:00",
6
"2022-01-31 01:30:00","2022-01-31 01:45:00"],
7
'generation':
8
[1234,4930,2092,20302,483,4924,5970,3983]})
9
df.datetime = pd.to_datetime(df.datetime)
10
df.set_index('datetime', inplace=True)
11
df.resample('1H').sum()
12
would result in
JavaScript
1
6
1
generation
2
datetime
3
2022-01-31 00:00:00 28558
4
2022-01-31 01:00:00 15360
5
6
All you need is to get a dataframe with a datetime index.