我的数据框是这样的
sampleID col1 col2
1 1 63
1 2 23
1 3 73
2 1 20
2 2 94
2 3 99
3 1 73
3 2 56
3 3 34
我需要将相同的样本放在一起,并且col1的顺序必须与上面的dataframe相同。
所以我需要这样
sampleID col1 col2
2 1 20
2 2 94
2 3 99
3 1 73
3 2 56
3 3 34
1 1 63
1 2 23
1 3 73
我该怎么做?如果我的例子不清楚,请告诉我。
最佳答案
假设你想通过sampleID
洗牌首先df.groupby
,洗牌(import random
,然后调用pd.concat
:
In [423]: groups = [df for _, df in df.groupby('sampleID')]
In [424]: random.shuffle(groups)
In [427]: pd.concat(groups).reset_index(drop=True)
Out[427]:
sampleID col1 col2
0 2 1 20
1 2 2 94
2 2 3 99
3 1 1 63
4 1 2 23
5 1 3 73
6 3 1 73
7 3 2 56
8 3 3 34
使用
df.reset_index(drop=True)
重置索引,但这是一个可选步骤。关于python - 按组随机排列 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45585860/