我認為有一個相當簡單的解決方案,但我現在無法解決這個問題。
我有一個包含幾十萬個訂單的資料框。我正在嘗試按子類別查找利潤最低的產品,但我正在嘗試過濾掉單獨銷售不到 2 次的產品。例如,如果一個產品只涉及一次交易,我不想將它包含在我的輸出中。
我希望我的最終輸出是 nsmallest 利潤產品的框架,其中“子類別”==“設備”和“產品”值計數 > 2。
我陷入困境的部分是“產品”價值計數部分。我只是無法讓它作業。
我試過 value_counts() 如下:
df[(df['Sub-Category'] == 'Appliances') & (df.value_counts('Product Name') > 2)]\
.groupby('Product Name', as_index = False)['margin'].mean().nsmallest(20,'margin')
我試過 groupby().count()
df[(df['Sub-Category'] == 'Appliances') & (df.groupby('Product Name').count() > 2)]\
.groupby('Product Name', as_index = False)['margin'].mean().nsmallest(20,'margin')
我想我知道問題所在:我認為問題在于我正在過濾聚合幀和非聚合幀,但我只是想不出如何檢查和過濾“產品名稱”的頻率。在這一點上,我有點腦死亡。
有什么建議?
提前致謝
uj5u.com熱心網友回復:
我認為問題在于我正在過濾聚合幀和非聚合幀。
你是對的,所以用map它的值來替換每個產品名稱。
代替:
(df.value_counts('Product Name') > 2)
經過:
(df['Product Name'].map(df.value_counts('Product Name')) > 2)
# OR
(df.groupby('Product Name')['Product Name'].transform('size') > 2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/449000.html
標籤:python-3.x 熊猫 数据框
