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

如何为DataFrame各列生成1000次Bootstrap样本并替换原列值?

实现方案

要实现对DataFrame每列进行1000次Bootstrap有放回采样,最终生成1000行的新DataFrame,可以用Python的pandas和numpy库完成,具体步骤如下:

代码实现

import pandas as pd
import numpy as np

# 构造原始DataFrame
original_df = pd.DataFrame({
    '列1': [1., 4., 7., 1.],
    '列2': [3., 5., 1., 9.]
})

# 定义Bootstrap采样函数:对单列生成n个有放回样本
def bootstrap_sample(column, n=1000):
    return np.random.choice(column, size=n, replace=True)

# 对每一列应用采样函数,生成新的DataFrame
bootstrapped_df = pd.DataFrame({
    col: bootstrap_sample(original_df[col]) 
    for col in original_df.columns
})

# 验证结果(可选)
print(bootstrapped_df.shape)  # 输出 (1000, 2)
print(bootstrapped_df.head())

代码说明

  • np.random.choice(column, size=1000, replace=True):核心逻辑是用numpy的随机选择函数,replace=True开启有放回采样,完全匹配Bootstrap采样要求,从原列中抽取1000个样本。
  • 通过字典推导式遍历原DataFrame的所有列,对每列执行采样后组合成新的DataFrame,直接得到1000行的目标结果。

如果需要保留原数据的全部行,再补充采样值至1000行(比如保留原4行,额外采样996个样本补充),可以调整采样逻辑:

def bootstrap_sample_with_original(column, n=1000):
    # 保留原数据,计算需要补充的样本数量并采样
    remaining = n - len(column)
    sampled = np.random.choice(column, size=remaining, replace=True)
    return np.concatenate([column.values, sampled])

bootstrapped_df = pd.DataFrame({
    col: bootstrap_sample_with_original(original_df[col]) 
    for col in original_df.columns
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:20:40