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

pandas如何按CSV首列图片名分组为每个图片随机抽50%行

Pandas按图片名分组50%抽样实现方案

核心调整思路

原逻辑为全局随机跳行抽样,无法识别图片分组边界,无法满足每组等比例抽样要求。调整为读入全量数据后,调用pandas原生分组抽样接口实现需求,适配当前37个图片分组、每组抽50%行的规则。

可直接运行的代码

import pandas as pd
import numpy as np

# 读取全量CSV数据,若你的CSV无表头请添加 header=None 参数
df = pd.read_csv(filename)

# 按第一列(存储图片名的列)分组,每组随机抽取50%行
# df.columns[0] 自动定位CSV第一列,无需手动填写列名
sampled_df = df.groupby(df.columns[0], group_keys=False).sample(
    frac=0.5,
    # 不需要固定每次抽样结果可以删掉下面的random_state参数
    random_state=42
)

# 可选:抽样后重置连续行索引
sampled_df = sampled_df.reset_index(drop=True)

参数说明

  • frac=0.5:指定每组抽样比例为50%,若分组行数为奇数,pandas会自动按规则取整
  • group_keys=False:保证输出的抽样结果结构和原CSV完全一致,不会额外添加分组索引
  • random_state=42:固定随机种子,保证每次运行得到的抽样结果一致,不需要可删除

注意事项

对应数据集总规模仅25601行、37个分组,全量读取后抽样的性能完全足够,无需做分块读取、预计算跳行等复杂处理。如果后续数据量扩大到百万级以上,再考虑分块预识别分组的优化方案即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:00:10