1

我有一个包含多个浮点列的数据框。我之前使用 pandas 中的 rank(pct=True) 计算了每列的百分位等级,并将它们存储在另一列中,我用它来绘制热图,因此我在等级列中没有负值。出于可视化目的,如果我可以将排名列从 [0,1] 转换为 [-1,1] 范围会更好。我知道这不是一种常见的方式,但是您对此有什么建议吗?下面的数据框示例

name r1    r2    r3
A    0.99  0.98  0.10 
B    1.00  0.50  0.00
C    0.99  0.15  0.90

预期输出(我不知道中间值,但旧的 1.00 仍应为 1.00,旧的 0.00 应为 -1.00,所有其他值都相应缩放)

name r1    r2    r3
A    ...  ...  ... 
B    1.00 ...  -1.00
C    ...  ...  ...

提前致谢

4

3 回答 3

1

只需做一些基本的数学运算来缩放它:

(df-0.5)*2
于 2021-02-02T18:05:53.773 回答
0

.max()您可以使用和.abs()或使用 scikitlearn在 pandas 中编写自己的函数MaxAbsScaler,详见此处:https ://towardsdatascience.com/data-normalization-with-pandas-and-scikit-learn-7c1cc6ed6475

于 2021-02-02T18:07:56.433 回答
0

看来您需要以下简单功能:

        (1-(-1))*(x-min)
f(x) =  ---------------- -1
            max - min

那是

2*(df-df.min())/(df.max()-df.min())-1
于 2021-02-02T18:13:34.727 回答