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

如何为Pandas DataFrame创建随机80/20分区并添加buildFlag字段

解决方案:Pandas随机划分数据集并添加分区标识字段

可以通过以下两种方式实现需求,保证buildFlag字段随机分配且80%为1、20%为0:


方法一:精准控制比例的手动生成法

先按比例生成固定数量的1和0,再打乱顺序保证随机性:

import pandas as pd
import numpy as np

# 原DataFrame
ds = {'col1':[1.0,2.1,2.2,3.1,41,5.2,5.0,6.1,7.1,10]}
df = pd.DataFrame(data=ds)

# 计算80%数据的行数
total_rows = len(df)
train_count = int(total_rows * 0.8)

# 生成对应比例的标识数组并打乱
build_flag = np.concatenate([np.ones(train_count), np.zeros(total_rows - train_count)])
np.random.shuffle(build_flag)

# 添加到原DataFrame并转为整数类型
df['buildFlag'] = build_flag.astype(int)

print(df)

方法二:简洁的概率抽样法

直接利用numpy.random.choice指定概率生成随机序列:

import pandas as pd
import numpy as np

# 原DataFrame
ds = {'col1':[1.0,2.1,2.2,3.1,41,5.2,5.0,6.1,7.1,10]}
df = pd.DataFrame(data=ds)

# 按80%/20%概率生成buildFlag
df['buildFlag'] = np.random.choice([1, 0], size=len(df), p=[0.8, 0.2]).astype(int)

print(df)

补充说明

  • 如果需要固定随机结果(可复现),可以在代码开头添加np.random.seed(123)(数字可自定义),锁定随机种子。
  • 两种方法都能满足需求,方法一更精准控制比例(不会因随机波动出现比例偏差),方法二更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:51:03