【问题标题】:Ranking values based on two columns基于两列的排名值
【发布时间】:2019-09-24 05:19:12
【问题描述】:

我正在尝试设计一种方法,根据电话持续时间和利润从最佳到最差对帐户进行排名。

数据是这样的;

ID  TIME_ON_PHONE  MARGIN
1   1235           1256
2   12             124 
3   1635           0
4   124            652
5   0              4566

关于如何将它们从最好到最差排序有什么建议吗?

ID 5 = 最好,因为我们没有花时间在电话上,但他们的利润是最多的。

ID 3 = 最糟糕,因为我们在电话上花了很长时间但没有订单。

我已将其放入 excel 中以尝试设计解决方案,但我无法获得正确的排名。

【问题讨论】:

  • 目前尚不清楚您正在寻找什么排序标准。您应该添加所需的输出并解释其逻辑。
  • 我们可以帮助您进行编码,但我们无法为您决定要使用什么逻辑。但也许MARGIN - 'TIME_ON_PHONE` 对你有好处。
  • 您可以按照margin / time_on_phone的比例排序,如果time_on_phone是0,则将比例设为float('inf')。
  • 我什至不知道从哪里开始逻辑!!!我能做的代码

标签: python ranking


【解决方案1】:

我建议创建一个新指标,例如

新指标 = 保证金/通话时间

比较每一行。

要使用此指标创建列,只需使用:

dataframe["new_metric"] = dataframe["MARGIN"]/dataframe["TIME_ON_PHONE"]

在 TIME_ON_PHONE 列中包含 0 值会导致错误,因此我建议将这些值替换为非常小的值,例如 0.001 或其他值。

之后,您可以简单地使用这行代码对您的行进行排序:

dataframe = dataframe.sort_values("new_metric", ascending = False)

这样你最终会得到第一个 ID 是最好的,第二个 ID 是第二好的......等等。

希望对你有帮助。

【讨论】:

  • 这足以让我从中得到一些东西,谢谢。它为我解决了它的 0.0001 位!谢谢
猜你喜欢
  • 2021-04-22
  • 2022-11-02
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多