如何在 Python 极坐标中创建十分位数列?

问题描述 投票:0回答:1

假设我有一列 FICO 分数。我想创建另一列 FICO_DECILE,对 FICO 分数进行降序排列并分配一个十分位数组,即 FICO=850 将具有 FICO_DECILE=1,而像 FICO=360 这样的列将具有 FICO_DECILE=10。

我尝试过:

# decile rank
df1 = df.with_columns(
    (
      (pl.col('fico').rank(method='dense')/df.height*10).cast(pl.UInt32).alias('fico_decile')
    )
)

但我只得到 DECILE_GROUP 等于 0 和 null。

python python-polars ranking quantile dense-rank
1个回答
0
投票

我还没有测试过,但这应该有效,总的来说,我认为你走在正确的轨道上,你得到这个错误的主要原因基本上是你如何使用

rank()

首先,使用排名来确定十分位数,方法是将排名除以总行数并乘以 10。 这会调整数据每个十分位数的边界,然后乘以 10。

这是一段指导代码

df1 = df.with_columns(
    (
        (pl.col('fico').rank(method='min', reverse=True) / df.height * 10)
        .ceil()
        .cast(pl.UInt32)
        .alias('fico_decile')
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.