我试图通过减去其平均值并除以其标准差来标准化列(a,b,c),并将结果分配给三个新列。然后,我需要将结果分配给三个新列,分别称为 a_norm、b_norm 和 c_norm。
我正在考虑使用 df.assign() 来创建新列,但我还没有找到将所有内容组合在一起的方法。
示例
你必须自己举例才能得到答案。
单击以下链接: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