[英]Filter Pandas series based on .sum() totals
我的数据包含每位用户一行,然后许多列基于与特定产品类别的互动而填充为1
或0
。
我正在运行一些相关性分析,我想删除不太重要的类别以使分析更易于阅读,我在数据.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
但这会返回所有类别,无论其True
或False
值如何。
我的最终目标是在数据上使用.corr()
,如何运行此函数,并且仅返回类别具有超过50个交互的网格?
您要过滤数据框中的列。 你是正确的轨道上的True
与False
的结果,你只需要使用它作为一个过滤器
假设数据在一个名为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.