【问题标题】:python scaling and scoring a dataframe with upper and lower limitpython缩放和评分具有上限和下限的数据帧
【发布时间】:2021-11-11 01:35:06
【问题描述】:

我有一个 df['values'] 列,我想在 0 和 1 之间打分。该范围是用 2 个单独的上限和下限来评分的。

  • 20/0 的下限/上限
  • 0/30 的下限/上限

python 上有这个操作的函数吗? minmaxscalar 不允许我设置上限和下限。

输入是 df['values']
期望的输出是 df['score']

values   score(20/0)  score(0/30)
-5.1     1.00         0.00
3.6      0.82         0.12
6.6      0.67         0.22
9.0      0.55         0.30
21.0     0.00         0.70

【问题讨论】:

    标签: python pandas scaling normalize


    【解决方案1】:

    您可以先缩放到低/高,然后再进行剪辑:

    df = pd.DataFrame({'values': [-5.1, 3.6, 6.6, 9, 21]})
    MIN = 20
    MAX = 0
    df['values'].sub(MIN).div(MAX-MIN).clip(0, 1)
    

    输出:

    0    1.00
    1    0.82
    2    0.67
    3    0.55
    4    0.00
    Name: values, dtype: float64
    

    作为函数

    def score(df, MIN, MAX):
        return (df['values']
                  .sub(MIN)
                  .div(MAX-MIN)
                  .clip(0, 1)
                  .rename(f'score({MIN},{MAX})')
                )
    
    pd.concat([df,
               score(df, 20, 0),
               score(df, 0, 30)],
              axis=1)
    

    输出:

       values  score(20,0)  score(0,30)
    0    -5.1         1.00         0.00
    1     3.6         0.82         0.12
    2     6.6         0.67         0.22
    3     9.0         0.55         0.30
    4    21.0         0.00         0.70
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多