如何将DataFrame中的K个随机值追加到没有重复项的列表中?

时间:2019-10-28 15:47:06

标签: python python-3.x pandas list bioinformatics

我具有以下形式的数据框:

1 2 3 4 5 6 7 8 
A C C T G A T C
C A G T T A D N
Y F V H Q A F D

我需要随机选择一列 k 次,其中 k 是给定样本中的列数。我的程序创建了一个大小为 k 的空列表的列表,然后从数据框中随机选择一个要追加到列表的列。每个列表必须唯一,并且不能重复。

从上面的示例数据框中,预期的输出应类似于:

[[2][4][6][1][7][3][5][8]]

但是我得到的结果如下:

[[1][1][3][6][7][8][8][2]]

执行此操作的最pythonic方法是什么?这是我很抱歉的尝试:

k = len(df.columns)
k_clusters = [[] for i in range(k)]

for i in range(len(k_clusters)):
    for j in range(i + 1, len(k_clusters)):
        k_clusters[i].append((df.sample(1, axis=1)))
        if k_clusters[i] == k_clusters[j]:
            k_clusters[j].pop(0)
            k_clusters[j].append(df.sample(1, axis=1)

2 个答案:

答案 0 :(得分:1)

您可以使用$("#form").submit(function(event){ document.domain = "mysite.com"; event.preventDefault(); var post_url = $(this).attr("action"); var request_method = $(this).attr("method"); var form_data = $(this).serialize(); $.ajax({ url : post_url, type: request_method, data : form_data }) }); 来随机排列列索引。因为从您的问题来看,这就是我想您想要做的。

一个例子:

numpy.random.shuffle

答案 1 :(得分:1)

除了改组步骤之外,您的问题与How to change the order of DataFrame columns?非常相似。可以在Python中以多种方式进行混洗:

cols = np.array(df.columns)
np.random.shuffle(cols)

或使用标准库:

cols = list(df.columns)
random.shuffle(cols)

不想做cols = df.columns.values,因为这将使您可以访问基础列名数据。然后,您将最终就地改组列名,弄乱了数据框。

重新排列列很容易:

df = df[cols]
相关问题