代码之家  ›  专栏  ›  技术社区  ›  Ben P

基于.sum()总计筛选熊猫系列

  •  1
  • Ben P  · 技术社区  · 7 年前

    我有每个用户包含一行的数据,然后有许多列用 1 0 基于它们与特定产品类别的交互。

    我正在运行一些相关分析,我想删除不太重要的类别,使我的分析更容易阅读,我使用 .sum() 在我的dataframe上查看与大多数交互的类别,但是现在如何仅在这个集合上运行相关?

    这是我的输出的一个样本 () :

    shoes_and_flats                                                                                           37
    nightwear_and_slippers                                                                                    61
    shorts_and_shorts                                                                                         23
    accessories_and_fragrance                                                                                 25
    jackets_and_coats_and_wool                                                                                12
    dresses_and_skirts_and_sleeveless_dresses                                                                 35
    swimwear_and_bikinis                                                                                      49
    dresses_and_skirts_and_floral_dresses                                                                      7
    jackets_and_coats_and_harrington_jackets                                                                  18
    dresses_and_skirts_and_tunic_dresses                                                                       8
    sports_performance_tops_and_vests                                                                          4
    jeans_and_bootcut_jeans                                                                                    2
    nightwear_and_nightwear                                                                                    1
    

    由做创造…

    totals = df.sum()

    我决定删除少于50个交互的类别,所以我使用… totals = totals[1: -1].sort_values() > 50

    但这会返回所有类别 True False 价值。

    我的最终目标是 .corr() 在数据上,我如何运行它,并且只返回一个类别有超过50个交互的网格?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Dillon    7 年前

    要筛选数据框中的列。你在正确的轨道上 True False 结果,你只需要用这个作为过滤器

    假设数据在名为 df ,这将只返回所需的列:

    totals = df.sum()
    df[totals[totals > 50].index]
    
        2
  •  0
  •   Ana Cruz    7 年前

    我相信你可以用:

    totals = totals[totals > 50]
    

    编辑:上面接受的答案的语法对我来说不起作用,所以万一这件事发生在其他人身上,我发现它起作用了

    totals = df.sum()
    totals = totals[totals > 50]
    df_more_than_50 = df.filter(totals.index))