如何在熊猫中将 15 分钟的数据转换为每小时?

时间:2021-01-09 15:04:03

标签: python pandas

我有两个生成器的生成数据,它们是 15 分钟的时间块,我想每小时转换一次。下面是一个例子:

 Time      Gen1  Gen2
00:15:00    10    21
00:30:00    12    22
00:45:00    16    26
01:00:00    20    11
01:15:00    60    51
01:30:00    30    31
01:45:00    70    21    
02:00:00    40    61

我想取前 4 个值的平均值(基本上是 15 分钟块到每小时块)并将它们放在 1 小时块的位置。预期输出:

Time      Gen1   Gen2
01:00:00   14.5    20
02:00:00    50     41

我知道我可以使用熊猫的 grourpby 函数来获得预期的输出,但我不知道它的正确语法。所以有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

resampleclosed='right' 一起使用。但首先我们将您的 Time 列转换为 datetime 类型:

df['Time'] = pd.to_datetime(df['Time'])
df.resample('H', on='Time', closed='right').mean().reset_index()
                 Time  Gen1  Gen2
0 2021-01-09 00:00:00  14.5  20.0
1 2021-01-09 01:00:00  50.0  41.0

要将 Time 列转换回时间格式,请使用:

df['Time'] = df['Time'].dt.time
       Time  Gen1  Gen2
0  00:00:00  14.5  20.0
1  01:00:00  50.0  41.0

答案 1 :(得分:1)

您可以尝试先创建一个列 hour,然后再创建一个 groupby('hour').mean()

df['date_time'] = pd.to_datetime(df['Time'], format="%H:%M:%S") 
df['hour'] = df['date_time'].apply(lambda x: x.strftime("%H:00:00"))
gr_df = df.groupby('hour').mean()
gr_df.index.name = 'Time'
print(gr_df.reset_index())

       Time       Gen1  Gen2
0  00:00:00  12.666667  23.0
1  01:00:00  45.000000  28.5
2  02:00:00  40.000000  61.0
相关问题