如何按行随机打乱 pandas 数据帧

How to shuffle a pandas dataframe randomly by row

我正在尝试按行而不是按列打乱 pandas 数据帧。

我有以下数据框:

   row1    row2    row3
1    3      1       6
2    5      2       7
3    7      3       8 
4    9      4       9

并且想打乱 df 以实现随机排列,例如:

   row1    row2    row3
1    6      3       1
2    3      9       2
3    7      5       8 
4    4      9       7

我试过:

df1 = df.reindex(np.random.permutation(df.index))

但是,这仅按列而非行排列。

您可以通过使用示例方法并将其应用于轴 #1 来实现此目的。 这将随机排列一行中的元素:

df = df.sample(frac=1, axis=1).reset_index(drop=True)

你想要的数据框看起来是完全随机的,这可以通过按行然后按列进行混洗来完成:

df = df.sample(frac=1, axis=1).sample(frac=1).reset_index(drop=True)

编辑:

import numpy as np
df = df.apply(np.random.permutation, axis=1)