繁体   English   中英

根据.sum()总数过滤熊猫系列

[英]Filter Pandas series based on .sum() totals

我的数据包含每位用户一行,然后许多列基于与特定产品类别的互动而填充为10

我正在运行一些相关性分析,我想删除不太重要的类别以使分析更易于阅读,我在数据.sum()使用了.sum()来查看与大多数内容交互的类别,但是现在如何仅对此集合运行相关性?

这是我的.sum()的输出样本:

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

但这会返回所有类别,无论其TrueFalse值如何。

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

您要过滤数据框中的列。 你是正确的轨道上的TrueFalse的结果,你只需要使用它作为一个过滤器

假设数据在一个名为df的数据帧中,这将仅返回您想要的列:

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

我相信您可以使用:

totals = totals[totals > 50]

编辑:上面接受的答案的语法对我不起作用,所以以防万一这发生在别人身上,这是我发现起作用的

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM