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

Pandas时间序列按日分组随机采样:处理样本不足及返回原DataFrame

解决方案

要实现每日随机采样且保留原DataFrame结构,可按以下方式修改代码:

核心代码

sampled_df = df.groupby(pd.Grouper(key='time', freq='D')).apply(
    lambda x: x.sample(n=min(len(x), 10)) if len(x) > 0 else pd.DataFrame(columns=df.columns)
).reset_index(drop=True)

代码说明

  • 分组对象调整:直接对整个DataFrame按日期分组,而非仅针对temperature列,确保采样后保留所有原始列数据。
  • 采样逻辑处理:
    • 对每个日期分组,先判断是否有数据:有数据时取min(分组长度, 10)个随机样本,自动满足"≥10取10,不足取全部"的需求;
    • 无数据的分组返回与原DataFrame列名一致的空DataFrame,避免触发采样报错。
  • 索引重置:通过reset_index(drop=True)移除groupby生成的多级索引,让结果结构与原DataFrame完全一致。

备选优化方案

如果想先过滤掉无数据的日期分组再采样,也可以这样写:

# 先过滤空分组,再执行采样
sampled_df = (
    df.groupby(pd.Grouper(key='time', freq='D'))
    .filter(lambda x: len(x) > 0)
    .groupby(pd.Grouper(key='time', freq='D'))
    .apply(lambda x: x.sample(n=min(len(x), 10)))
    .reset_index(drop=True)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:22:05