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

Python:DataFrame每行数组有放回抽随机数时长度不匹配错误排查

问题分析与解决

错误原因

你的列表推导式用了两层嵌套循环:

  • 第一层for i in df是遍历DataFrame的所有列(共11列)
  • 第二层for j in df[i]是遍历该列下的800行数组
    最终生成的列表总长度是列数 × 行数(比如11×800=8800),但你的DataFrame只有800行,把长度远大于800的列表赋值给新列时,就会触发Length of values does not match length of index错误。

修正方案

你的需求是对每行的所有列数组合并后抽取1000个有放回样本,以下是两种可行的实现方式:

方式一:使用df.apply逐行处理

import numpy as np
import pandas as pd

n = 1000
def process_row(row):
    # 拼接当前行所有列的数组为一维数组
    full_array = np.concatenate(row.values)
    # 抽取n个有放回随机样本
    return np.random.choice(full_array, size=n, replace=True)

df['rand_sample'] = df.apply(process_row, axis=1)

方式二:使用iterrows遍历行的列表推导式

n = 1000
df['rand_sample'] = [
    np.random.choice(np.concatenate(row), size=n, replace=True)
    for _, row in df.iterrows()
]

说明

两种方式都是遍历DataFrame的800行,每行生成一个长度为1000的样本数组,最终生成的列表长度为800,与DataFrame的行数完全匹配,因此可以成功赋值到新列rand_sample中。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:57:16