Python:从数据框采样,存储未采样

时间:2020-02-05 09:18:16

标签: python pandas dataframe sample sampling

我有一个熊猫DataFrame。 假设我想对每个小组的两个人进行抽样,我使用以下代码来获取新的数据框:

sample_df = df.groupby("category").apply(lambda group_df: group_df.sample(2, random_state=1234)

我想创建一个存储未抽样人员的数据框。

sample_df的Stil具有原始df的索引,因此我可能必须对此进行处理,但是我不确定是什么...

谢谢!

1 个答案:

答案 0 :(得分:1)

首先将group_keys=False添加到groupby,以避免将category添加到MultiIndex

df = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'category':list('aaabbb')
})

sample_df = (df.groupby("category", group_keys=False)
               .apply(lambda group_df: group_df.sample(2, random_state=1234)))
print(sample_df)
   A  B category
0  a  4        a
1  b  5        a
3  d  5        b
4  e  5        b

因此可以用boolean indexingIndex.isin过滤原始索引值,用~用倒置掩码过滤:

non_sample_df = df[~df.index.isin(sample_df.index)]
print(non_sample_df)
   A  B category
2  c  4        a
5  f  4        b
相关问题