有什么简单有效的方法可以按行或按列对panda中的数据框进行随机排序?即,如何编写一个函数shuffle(df, n, axis=0)
,该函数接受一个数据帧,许多随机播放n
和一个轴(axis=0
是行,axis=1
是列),并返回已被随机播放n
多次的数据帧的副本。
编辑:关键是这样做而不破坏数据框的行/列标签。如果您只是随机播放df.index
,则会丢失所有这些信息。df
除了行顺序或列顺序不同之外,我希望结果与原始结果相同。
Edit2:我的问题不清楚。我说的是随机排列,是指分别随机排列每一行。因此,如果您有两列a
和b
,则我希望每一行都按其顺序进行随机排列,这样,您a
和之间就不会具有相同的关联,b
就好像您只是重新排列整个行的顺序一样。就像是:
for 1...n:
for each col in df: shuffle column
return new_df
但是希望比幼稚的循环更有效。这对我不起作用:
def shuffle(df, n, axis=0):
shuffled_df = df.copy()
for k in range(n):
shuffled_df.apply(np.random.shuffle(shuffled_df.values),axis=axis)
return shuffled_df
df = pandas.DataFrame({'A':range(10), 'B':range(10)})
shuffle(df, 5)