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

2024-04-24 14:11:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个发电机的生成数据,这是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

我知道我可以使用pandas的grourpby函数来获得预期的输出,但我不知道它的正确syntex。有人能帮忙吗


Tags: 数据函数pandastime发电机例子平均值小时
2条回答

您可以尝试创建列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

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

相关问题 更多 >