如何在pandas、python中把一个时间数据集还原成一个新的、6小时平均的数据集?

问题描述 投票:0回答:1

我想在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日12时至18时。示例数据框架的代码是。

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'])

希望能得到帮助

python pandas datetime
1个回答
1
投票

使用 DataFrame.resample6Hmean:

#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
© www.soinside.com 2019 - 2024. All rights reserved.