【发布时间】:2020-03-20 10:54:47
【问题描述】:
我想洗牌一些列值,但只在某个组内,并且只在组内一定百分比的行。例如,对于每组,我想将 b 列中 n% 的值相互打乱。
df = pd.DataFrame({'grouper_col':[1,1,2,3,3,3,3,4,4], 'b':[12, 13, 16, 21, 14, 11, 12, 13, 15]})
grouper_col b
0 1 12
1 1 13
2 2 16
3 3 21
4 3 14
5 3 11
6 3 12
7 4 13
8 4 15
示例输出:
grouper_col b
0 1 13
1 1 12
2 2 16
3 3 21
4 3 11
5 3 14
6 3 12
7 4 15
8 4 13
我找到了
df.groupby("grouper_col")["b"].transform(np.random.permutation)
但是我无法控制洗牌值的百分比。
感谢您的任何提示!
【问题讨论】:
标签: python pandas pandas-groupby permutation shuffle