[英]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.