Tes*_*est 5 python shuffle dataframe pandas
我的数据框看起来像这样
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
Run Code Online (Sandbox Code Playgroud)
我需要重新整理数据帧,使相同的样本保持在一起,并且col1的顺序必须与上述数据帧中的顺序相同。
所以我需要这样
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
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?如果我的例子不清楚,请告诉我。
sac*_*ruk 10
我发现这比接受的答案要快得多:
ids = df["sampleID"].unique()
random.shuffle(ids)
df = df.set_index("sampleID").loc[ids].reset_index()
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这pd.concat是我的用例的瓶颈。不管怎样,你可以避免串联。
假设您想改组sampleID。首先df.groupby,先随机播放(import random然后),然后调用pd.concat:
import random
groups = [df for _, df in df.groupby('sampleID')]
random.shuffle(groups)
pd.concat(groups).reset_index(drop=True)
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
Run Code Online (Sandbox Code Playgroud)
使用重置索引df.reset_index(drop=True),但这是可选步骤。
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |