亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有條件的 Pandas sample()

有條件的 Pandas sample()

弒天下 2022-11-29 17:04:40
我有這個數據框(縮短):+-------+------------+--------+----------+-------+------+| index | id_product | margin | supplier | price | seen |+-------+------------+--------+----------+-------+------+| 0     | 100000000  | 92.00  | 14       | 0.56  | 2    || 1     | 100000230  | 72.21  | 27       | 8.17  | 0    || 2     | 100001440  | 72.07  | 15       | 16.20 | 687  || 3     | 100002331  | 30.55  | 13       | 41.67 | 0    || 7     | 100001604  | 35.17  | 27       | 18.80 | 491  || ...   | ...        | ...    | ...      | ...   | ...  || 9830  | 100000320  | 77.78  | 18       | 13.33 | 0    || 9831  | 100000321  | 77.78  | 98       | 13.33 | 0    || 9832  | 100000443  | 77.78  | 17       | 13.33 | 4587 || 9834  | 100000292  | 88.13  | 3        | 10.56 | 0    || 9835  | 100000236  | 72.21  | 18       | 10.56 | 0    |+-------+------------+--------+----------+-------+------+我想做的是隨機提取 3 行,使用df.sample(3)maybe,但條件如下:選擇的 3 行應該有 3個不同的ecom_id:(14,27,13) 好,(14,27,14) 不好。具有較高邊距的行應該享有特權。我用weights='margin',效果不錯。seen較低的行應該享有特權。是否可以使用 sample() 反轉權重計數以優先考慮最低值?應在 3 個不同的價格切片中找到 3 個選定行:第一個選定行的價格應小于 20.0,第二個選定行的價格應在 30 到 50 之間,最后第三個也是最后一個選定行的價格應 > 80。這可能嗎 ?我嘗試過類似的東西:pr_1_pd = pr_pd.loc[pr_pd['price'] < 20]pr_2_pd = pr_pd.loc[(pr_pd['price'] > 30) & (pr_pd['price'] < 50)]pr_3_pd = pr_pd.loc[pr_pd['price'] > 80]pr_1_pd = pr_1_pd.sort_values(by=['margin','seen'],ascending=[False,True])pr_2_pd = pr_2_pd.sort_values(by=['margin','seen'],ascending=[False,True])pr_3_pd = pr_3_pd.sort_values(by=['margin','seen'],ascending=[False,True])但我不確定如何將所有過濾器組合在一起
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

  • 選擇的 3 行應該有 3 個不同的 ecom_id:(14,27,13) 好,(14,27,14) 不好。

replace=Falseif中的設置pd.sample應該實現這一點ecom_id是唯一的。

  • seen 較低的行應該享有特權。是否可以使用 sample() 反轉權重計數以優先考慮最低值?

您可以反轉權重new_weight = 1 / seen來實現此目的。

  • 應在 3 個不同的價格切片中找到 3 個選定行:第一個選定行的價格應小于 20.0,第二個選定行的價格應在 30 到 50 之間,最后第三個也是最后一個選定行的價格應 > 80。

您必須分別從pr_1_pd、pr_2_pd和中采樣,pr_3_pd然后將結果組合起來pd.concat以實現此目的。


查看完整回答
反對 回復 2022-11-29
  • 1 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號