随机样本的我有一个熊猫数据帧这样说:Python的熊猫:获得2套每
user value
0 a 1
1 a 2
2 a 3
3 a 4
4 a 5
5 b 6
6 b 7
7 b 8
8 b 9
9 b 10
10 c 11
11 c 12
12 c 13
13 c 14
14 c 15
现在我想通过用户组,并建立两个相互排斥的随机样本出来的如
SET1每组1个采样:
user value
3 a 4
9 b 10
13 c 14
SET2,每组2个样品:
user value
0 a 1
1 a 2
5 b 6
6 b 7
10 c 11
11 c 12
到目前为止,我心中已经试过这样:
u = np.array(['a','b','c'])
u = np.repeat(u,5)
df = pd.DataFrame({'user':u,'value':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]})
set1 = df.groupby(['user']).tail(1)
set2 = df.groupby(['user']).head(2)
但这些都不是随机样本,我想他们是相互排斥的。有任何想法吗?
PS。每个组总是至少有3个元素
是的,我喜欢这个优于我的答案,更清洁,但我认为适用是不必要的。我认为你可以对整个DataFrame进行采样并像往常一样进行分组:'df.sample(len(df))。groupby('user')。head(1)'。 –
是的,'df.sample(len(df))'可能在引擎盖下做了同样的事情(索引的随机排列)。但我认为原始数据帧可能很大,因此创建另一个长度相同的数据帧可能不是最佳的。 – ayhan