将所有列标准化为pandas数据帧

时间:2017-07-27 10:59:03

标签: python pandas numpy

我想将所有列的pandas数据帧规范化

In [8]: df
Out[8]:
   x  y
0  1  2
1  2  3
2  3  4

我做

df_nor = (df-df.min())/(df.max()-df.min())

OUT:

In [10]: df_nor
Out[10]:
     x    y
0  0.0  0.0
1  0.5  0.5
2  1.0  1.0

如何将列x和y一起标准化,如

In [10]: df_nor
Out[10]:
     x    y
0  0.000  0.333
1  0.333  0.666
2  0.666  1.000

谢谢!

1 个答案:

答案 0 :(得分:1)

因为它是NumPy标记的,所以这是使用底层数组数据的那个 -

In [54]: a = df.values # get underlying array

In [55]: pd.DataFrame((a-a.min())/(a.max()-a.min()), columns=df.columns)
Out[55]: 
          x         y
0  0.000000  0.333333
1  0.333333  0.666667
2  0.666667  1.000000

或者更接近pandas,我们可以做 -

In [79]: (df-df.values.min())/(df.values.max()-df.values.min())
Out[79]: 
          x         y
0  0.000000  0.333333
1  0.333333  0.666667
2  0.666667  1.000000