遍历200个已定义数据集调用iloc报AttributeError问题咨询
错误原因
你代码中('dataset'+j)生成的是字符串类型的变量名,并非你提前定义好的数据集对象本身,字符串类型没有iloc属性,因此会抛出对应的AttributeError。
除此之外你原有代码还存在两处逻辑错误:
- 初始化的
Tdata形状仅为[20,6],但遍历200个数据集、每个取20行总共需要4000行存储空间,形状不匹配导致数据无法正常写入 random.randint(100)语法错误,该方法必须传入上下限两个参数,仅传入单个参数会抛出参数数量异常
解决方法
最规范的写法是先将所有提前定义的数据集存入列表,再遍历列表取值:
import numpy as np import random # 方法1:提前将数据集存入列表(推荐) dataset_list = [dataset0, dataset1] # 补充写完到dataset199即可 # 如果不想手写200个变量,也可以用全局变量动态读取(不推荐生产环境使用) # dataset_list = [globals()[f'dataset{j}'] for j in range(200)] # 初始化正确大小的空数组 Tdata = np.zeros([20 * 200, 6]) k = 0 for ds in dataset_list: for _ in range(20): # 生成合法的随机行索引,范围是0到数据集行数-1 random_idx = random.randint(0, len(ds) - 1) Tdata[k:k+1, :] = ds.iloc[random_idx].values k += 1
内容的提问来源于stack exchange,提问作者TariqShah
相关产品推荐
相关产品推荐

