【发布时间】:2017-05-24 13:11:54
【问题描述】:
假设我有一个数据框 df:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(12,4))
print(df)
0 1 2 3
0 71 64 84 20
1 48 60 83 61
2 48 78 71 46
3 65 88 66 77
4 71 22 42 58
5 66 76 64 80
6 67 28 74 87
7 32 90 55 78
8 80 42 52 14
9 54 76 73 17
10 32 89 42 36
11 85 78 61 12
如何将 df 的行随机打乱三乘三,即如何随机打乱前三行 (0, 1, 2) 与第二行 (3, 4, 5)、第三行 (6 , 7, 8) 还是第四 (9, 10, 11) 组?这可能是一个可能的结果:
print(df)
0 1 2 3
3 65 88 66 77
4 71 22 42 58
5 66 76 64 80
9 54 76 73 17
10 32 89 42 36
11 85 78 61 12
6 67 28 74 87
7 32 90 55 78
8 80 42 52 14
0 71 64 84 20
1 48 60 83 61
2 48 78 71 46
因此,新订单具有来自原始数据帧的第二组 3 行,然后是最后一行,然后是第三组,最后是第一组。
【问题讨论】:
-
随机播放是指将
0与3、1与4、2与5等交换? -
不,将 (0,1,2) 与 (3,4,5)、(6,7,8) 或 (9,10,11) 随机交换。
-
对
3 rows的所有包都这样做? -
是的,所以随机将第 1 组与第 2、3 或 4 组随机混洗,每个组包含 3 行。我将进行编辑以使其更清晰。
-
仍然不能 100% 确定您的确切意思 - 您是否想要以 3 人一组的方式随机排列行(每组保留顺序但会四处移动 - 或者只是两组交换位置等......)。你能提供示例输出吗?这将有助于澄清您的问题。
标签: python pandas numpy shuffle