我正在尝试在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.resample
与6H
一起使用,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