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

pandas DataFrame如何按年月分组后每组随机抽取10行存入新数据框

实现代码

方法1:高版本pandas(1.1.0+)最简写法

# 按年月分组,每组无放回随机抽取10行
sampled_df = df.groupby(df['daate'].dt.to_period('M')).sample(
    n=10, 
    random_state=42, 
    replace=False
)

方法2:兼容所有pandas版本的写法

sampled_df = df.groupby(df['daate'].dt.to_period('M')).apply(
    lambda group: group.sample(n=10, random_state=42, replace=False)
).reset_index(drop=True)

参数说明

  • 分组键df['daate'].dt.to_period('M'):将datetime类型的日期列转换为年月周期值,相同年月的行会被分到同一组
  • n=10:指定每个分组抽取10行,你当前每个分组固定100行,完全满足抽样要求
  • random_state=42:固定随机种子,可保证每次运行抽样结果一致,不需要复现结果可删除该参数
  • replace=False:设置无放回抽样,避免同一分组内抽到重复行
  • reset_index(drop=True):清除分组生成的冗余索引,最终得到的新DataFrame为连续索引

如果后续你的数据分组行数不固定,也可以把参数n=10替换为frac=0.1,代表每组固定抽取10%的行数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:45:01