从数据帧列的唯一值列表中同步为多行随机选择

2024-05-23 13:32:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个尺寸为90000x18(熊猫数据框)的数据集。生成该数据时,考虑了一些随机变量,以解释在模型中选择不同参数时存在的不确定性。由于使用了这些随机变量,对于每一组主要特征,结果生成了100次,因此我们可以在输出中得到这些随机惩罚的分布。现在我想做的是从90000个实例的数据集中提取这100个具有相同特征(对应列中的值相同)的实例。但是,我想随机选取这些值的组合。以下是我使用的代码:

import random
RandomList = pd.DataFrame()
while len(RandomList)==0:
    RandomList = df_te.loc[
        (df_te['constellation'] == random.choice(constellation)) & (df_te['volume'] == random.choice(volume)) &
        (df_te['link_len_n'] == random.choice(link_len_n)) & (df_te['link_len_m'] == random.choice(link_len_m)) &
        (df_te['link_len_s'] == random.choice(link_len_s)) & (df_te['guardband_l'] == random.choice(guardband_l)) &
        (df_te['guardband_r'] == random.choice(guardband_r)) & (df_te['traffic_l'] == random.choice(traffic_l)) &
        (df_te['traffic_r'] == random.choice(traffic_r)) & (df_te['constellation_l'] == random.choice(constellation_l)) &
        (df_te['constellation_r'] == random.choice(constellation_r))]

然而,它只是做了一个无限循环,我认为这是因为,当它随机选取第一列的值时,它限制了可以从下一列中选取的值,过了一段时间,它就找不到与随机选取的前一列值相匹配的其余列的任何值。传递给random.choice()函数的变量只是与数据框中的列同名的每列的唯一值列表。我在这里使用while循环的原因是它将返回长度为零的数据帧(RandomList),而不使用它。当我只强制执行前五个随机选择时,它工作得很好,但当我添加到它们时,我可以获得所有功能的完整随机选择,它似乎创建了一个无限循环。有人对我如何做到这一点有什么想法吗


Tags: 数据实例dflenlinkrandom特征te