2017-07-26 98 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

非常感謝。這工作得很好。 –