You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

长格式pandas dataframe重采样保留点位计算日均速度的方法

解决方法

你当前直接对全量数据集调用resample计算均值,会把同一天内所有点位的观测值合并计算,自然无法保留点位维度的分组结果。你需要先按点位列分组,再对每个分组单独执行重采样聚合操作即可。

完整修改后代码

import pandas as pd
import numpy as np

dti = pd.date_range('2015-01-01', '2015-12-31', freq='15min')
df = pd.DataFrame(index = dti)
df['Location'] = 'A'
df['speed'] = np.random.randint(low=0, high=60, size=len(df.index))
# 可自行补充距离列
df['distance'] = df['speed'] * 0.25 # 15分钟=0.25小时

dti2 = pd.date_range('2015-01-01', '2016-06-05', freq='30min')
df2 = pd.DataFrame(index = dti2)
df2['Location'] = 'B'
df2['speed'] = np.random.randint(low=0, high=60, size=len(df2.index))
df2['distance'] = df2['speed'] * 0.5 # 30分钟=0.5小时

# 旧版本pandas可用append,新版本推荐用concat
df = pd.concat([df, df2])

# 核心逻辑:先按点位分组,再对每个分组重采样求均值
daily_avg = df.groupby('Location').resample('D')[['speed', 'distance']].mean()

# 如果你需要把多层索引转为普通列,加下面这行即可
daily_avg = daily_avg.reset_index()

逻辑说明

  • 首先groupby('Location')会将数据集按A、B两个点位拆分为独立的子数据集,互不干扰
  • 对每个子数据集单独执行resample('D')按日对齐时间轴,自动适配两个点位不同的采样频率
  • 最后指定[['speed', 'distance']].mean()对每个点位、每一天的对应指标单独计算均值,不会出现跨点位合并计算的问题

内容的提问来源于stack exchange,提问作者user9118870

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:24:07