2017-07-26 14 views
2

person列(A、B、C、Dなど)でグループ化できるデータフレームがあり、それぞれのレコードには特定のレコード数。問題は、各グループ内の順序を変更することなく、それらの人をシャッフルする方法です。カテゴリの列に基づいてパンダのデータフレームをシャッフルする方法

+0

はすでに一緒に同じ人からの記録であるか、それらが周囲に点在しているを改造するために考えてみましょうそれが真実ならば、どうやってそれをシャッフルしたいのですか? – Psidom

+0

申し訳ありません。私はそれをあまり混乱させてはならないはずでした。彼らはすでに私が言うだろう一緒に置かれています。 –

答えて

3

は、データフレームdf

df = pd.DataFrame(dict(
    Person=list('BBBEEEAAACCCZZZZZ'), 
    Other=range(17) 
)) 

    Other Person 
0  0  B 
1  1  B 
2  2  B 
3  3  E 
4  4  E 
5  5  E 
6  6  A 
7  7  A 
8  8  A 
9  9  C 
10  10  C 
11  11  C 
12  12  Z 
13  13  Z 
14  14  Z 
15  15  Z 
16  16  Z 

使用np.random.permutationが、その後Personと​​/loc/reset_index

df.set_index('Person').loc[ 
    np.random.permutation(df.Person.unique()) 
].reset_index() 

    Person Other 
0  Z  12 
1  Z  13 
2  Z  14 
3  Z  15 
4  Z  16 
5  A  6 
6  A  7 
7  A  8 
8  C  9 
9  C  10 
10  C  11 
11  B  0 
12  B  1 
13  B  2 
14  E  3 
15  E  4 
16  E  5 
+0

ありがとうございました。これは非常にうまくいく。 –

関連する問題