如何按日期时间分组DataFrame并计算各列的分钟均值?
按分钟分组计算DataFrame各列均值的实现方法
要实现按分钟对DataFrame分组并计算各列均值,最终每分钟仅保留一条记录,可以用pandas的时间序列处理功能,以下是两种常用的实现方式:
方法一:使用resample重采样(推荐用于时间序列数据)
如果你的日期时间列是标准的时间格式,先确保它被转换为datetime类型,然后通过重采样功能按分钟聚合:
import pandas as pd # 假设你的DataFrame名为df,日期时间列名为'timestamp' # 1. 将日期时间列转换为datetime类型 df['timestamp'] = pd.to_datetime(df['timestamp']) # 2. 将日期时间列设置为索引(resample需要基于时间索引) df = df.set_index('timestamp') # 3. 按分钟('T'代表分钟)重采样,计算所有列的均值 df_minute_mean = df.resample('T').mean() # 如果需要将时间索引转回普通列 df_minute_mean = df_minute_mean.reset_index()
方法二:使用groupby配合dt.floor
如果不想修改索引,可以通过提取分钟级别的时间戳作为分组键,再聚合计算均值:
import pandas as pd # 1. 转换日期时间列类型 df['timestamp'] = pd.to_datetime(df['timestamp']) # 2. 生成分钟级别的分组键(将时间戳向下取整到分钟) df['minute_group'] = df['timestamp'].dt.floor('min') # 3. 按分钟分组,计算各列均值 df_minute_mean = df.groupby('minute_group').mean().reset_index() # 可选:删除临时分组列 df_minute_mean = df_minute_mean.drop(columns=['minute_group'])
两种方法最终都会得到每分钟一条记录,每条记录对应原数据该分钟内各列的平均值。如果某一分钟没有数据,resample会生成NaN值(可以通过添加dropna=True参数移除这些行),而groupby则不会包含该分钟的记录。
内容的提问来源于stack exchange,提问作者user15370388
相关产品推荐
相关产品推荐

