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

如何在Python中对DataFrame两组数据分别抽取50%和100%样本?

问题分析与解决

原代码的核心问题是判断条件逻辑错误:'group' == 1是将列名字符串与数字1做比较,结果永远为False,导致所有组都执行了同一抽样逻辑,无法实现"一组抽50%、另一组全保留"的需求。

修正后的代码

假设你需要对group列取值为1的组抽取50%数据,另一组保留全部数据,修正后的代码如下:

# 可选:打乱原数据顺序(不需要的话可删除这一行)
df1 = df1.sample(frac=1).reset_index(drop=True)

# 按group分组,根据组标识执行对应抽样逻辑
grouped = df1.groupby('group', as_index=False)
newgroups = grouped.apply(lambda x: x.sample(frac=0.5) if x['group'].iloc[0] == 1 else x).reset_index(drop=True)

关键说明

  • x['group'].iloc[0]用于获取当前分组的组标识(同一组内的group值完全一致),以此判断该组应采用的抽样比例。
  • 若需要调整目标分组(比如对group为0的组抽50%),只需修改判断条件中的数值即可。
  • reset_index(drop=True)用于清除分组后产生的多级索引,避免干扰后续数据操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:20:37