我具有以下形式的数据框:
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)
答案 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]