通过减去平均值并除以标准差对列(a、b、c)进行标准化,并将结果分配给三个新列

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

我试图通过减去其平均值并除以其标准差来标准化列(a,b,c),并将结果分配给三个新列。然后,我需要将结果分配给三个新列,分别称为 a_norm、b_norm 和 c_norm。

我正在考虑使用 df.assign() 来创建新列,但我还没有找到将所有内容组合在一起的方法。

python pandas dataframe normalization
1个回答
0
投票

示例

你必须自己举例才能得到答案。

单击以下链接:https://stackoverflow.com/help/minimal-reproducible-example

这次我做了一个简单的例子。

import pandas as pd
data = {'a': [8, 7, 2, 1], 'b': [1, 3, 5, 1], 'c': [2, 6, 1, 0]}
df = pd.DataFrame(data)

df

    a   b   c
0   8   1   2
1   7   3   6
2   2   5   1
3   1   1   0

代码

步骤1。标准化

tmp = df.sub(df.mean()).div(df.std()).add_suffix('_norm')

tmp:

    a_norm      b_norm      c_norm
0   0.996616    -0.783349   -0.095059
1   0.711868    0.261116    1.425880
2   -0.711868   1.305582    -0.475293
3   -0.996616   -0.783349   -0.855528

步骤2。连接 df 和 tmp

out = pd.concat([df, tmp], axis=1)

输出:

    a   b   c   a_norm      b_norm      c_norm
0   8   1   2   0.996616    -0.783349   -0.095059
1   7   3   6   0.711868    0.261116    1.425880
2   2   5   1   -0.711868   1.305582    -0.475293
3   1   1   0   -0.996616   -0.783349   -0.855528
© www.soinside.com 2019 - 2024. All rights reserved.