为了账号安全,请及时绑定邮箱和手机立即绑定

有条件的 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_pdpr_2_pd和中采样,pr_3_pd然后将结果组合起来pd.concat以实现此目的。


查看完整回答
反对 回复 2022-11-29
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信