假设我有一个可以按person
列(A,B,C,D等)分组的数据框,并且每个人都有一定数量的记录。问题是如何在不改变每个组内的顺序的情况下改变那些人?
答案 0 :(得分:4)
考虑数据框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
,然后set_index
/ 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