Python 如何根据分类列洗牌数据帧
假设我有一个数据帧,可以按Python 如何根据分类列洗牌数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有一个数据帧,可以按人列(a、B、C、D等)分组,每个人都有一定数量的记录。问题是如何在不改变每组顺序的情况下洗牌这些人?考虑数据帧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
人
列(a、B、C、D等)分组,每个人都有一定数量的记录。问题是如何在不改变每组顺序的情况下洗牌这些人?考虑数据帧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
重新排列人员
,然后设置索引
/loc
/重置索引
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
来自同一个人的记录已经在一起了,还是分散在一起了,如果是真的,你想怎么洗牌呢?对不起。在这方面,我本应该使它不那么令人困惑。我想说,它们已经组合在一起了。