【问题标题】:Python: sample from dataframe, storing the non-sampledPython:来自数据帧的样本,存储非采样
【发布时间】:2020-02-05 09:18:16
【问题描述】:

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

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

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

sample_df 仍然具有原始 df 的索引,所以我可能需要对此做些什么,但我不确定是什么...

提前致谢!

【问题讨论】:

    标签: python pandas dataframe sample sampling


    【解决方案1】:

    首先将group_keys=False 添加到groupby 以避免categoryMultiIndex

    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
    

    因此可以通过Index.isin 过滤带有boolean indexing 的原始索引值和~ 的反转掩码:

    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
    

    【讨论】:

    • 非常感谢,这解决了!每天学习:D
    猜你喜欢
    • 2018-02-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多