如何在熊猫 python 中将时间数据集减少为新的 6 小时平均数据集?



我正在尝试在python中对数据帧进行6小时的平均值。请参阅下面的示例。

time  temperature
0  2020-01-01 04:30:00            2
1  2020-01-01 05:50:00            3
2  2020-01-01 09:30:00            4
3  2020-01-01 11:50:00            6
4  2020-01-01 13:30:00            3
5  2020-01-01 13:55:00            4
6  2020-01-01 20:30:00            1
7  2020-01-01 22:55:00            4
8  2020-01-02 02:30:00            7
9  2020-01-02 02:40:00            8
10 2020-01-02 10:30:00            3
11 2020-01-02 10:40:00            5
12 2020-01-02 14:30:00            2
13 2020-01-02 15:40:00            6
14 2020-01-02 23:30:00            5
15 2020-01-02 23:47:00            1

从这个例子中,理想情况下,我想获得以下新数据帧:

time  temperature
0  2020-01-01 06:00:00          2.5
1  2020-01-01 12:00:00            5
2  2020-01-01 18:30:00          3.5
3  2020-01-01 00:00:00          2.5
4  2020-01-02 06:00:00          7.5
5  2020-01-02 12:00:00            4
6  2020-01-02 18:00:00            4
7  2020-01-02 00:00:00            3

因此,当时间说2020-01-02 18:00:00时,这意味着在2020年1月2日从12h到18h。示例数据帧的代码为:

import pandas as pd
from datetime import datetime
flights = {
'time': [datetime.strptime('1/1/2020 4:30 AM', '%d/%m/%Y %I:%M %p'),datetime.strptime('1/1/2020 5:50 AM', '%d/%m/%Y %I:%M %p'),
datetime.strptime('1/1/2020 9:30 AM', '%d/%m/%Y %I:%M %p'),datetime.strptime('1/1/2020 11:50 AM', '%d/%m/%Y %I:%M %p'),
datetime.strptime('1/1/2020 1:30 PM', '%d/%m/%Y %I:%M %p'),datetime.strptime('1/1/2020 1:55 PM', '%d/%m/%Y %I:%M %p'),
datetime.strptime('1/1/2020 8:30 PM', '%d/%m/%Y %I:%M %p'),datetime.strptime('1/1/2020 10:55 PM', '%d/%m/%Y %I:%M %p'),
datetime.strptime('2/1/2020 2:30 AM', '%d/%m/%Y %I:%M %p'),datetime.strptime('2/1/2020 2:40 AM', '%d/%m/%Y %I:%M %p'),
datetime.strptime('2/1/2020 10:30 AM', '%d/%m/%Y %I:%M %p'),datetime.strptime('2/1/2020 10:40 AM', '%d/%m/%Y %I:%M %p'),
datetime.strptime('2/1/2020 2:30 PM', '%d/%m/%Y %I:%M %p'),datetime.strptime('2/1/2020 3:40 PM', '%d/%m/%Y %I:%M %p'),
datetime.strptime('2/1/2020 11:30 PM', '%d/%m/%Y %I:%M %p'),datetime.strptime('2/1/2020 11:47 PM', '%d/%m/%Y %I:%M %p')],
'temperature': [2,3,4,6,3,4,1,4,7,8,3,5,2,6,5,1]}
df = pd.DataFrame(flights, columns = ['time','temperature'])

任何帮助将不胜感激

DataFrame.resample6H一起使用,mean

#if necessary
df['time'] = pd.to_datetime(df['time'])
df = df.resample('6H', on='time').mean().reset_index()
print (df)
time  temperature
0 2020-01-01 00:00:00          2.5
1 2020-01-01 06:00:00          5.0
2 2020-01-01 12:00:00          3.5
3 2020-01-01 18:00:00          2.5
4 2020-01-02 00:00:00          7.5
5 2020-01-02 06:00:00          4.0
6 2020-01-02 12:00:00          4.0
7 2020-01-02 18:00:00          3.0

最新更新