规范化pandas数据框但跳过几列

时间:2017-09-27 17:40:38

标签: python-3.x pandas

我使用以下代码来规范化数字pandas数据框。

df_norm = (input_df - input_df.mean()) / (input_df.max() - input_df.min())

现在我有了一个新的数据框,前两列是字符串。我想忽略前两列并对数据帧的其余部分执行规范化。有没有办法通过小修改重用上面的代码?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用第二列的切片 -

s0 = input_df.iloc[:,2:]
input_df.iloc[:,2:] = (s0 - s0.mean()) / (s0.max() - s0.min())

示例运行 -

In [274]: input_df
Out[274]: 
      0     1         2         3
0  foo1  doo1  0.880515  0.307642
1  foo2  doo2  0.774307  0.229650
2  foo3  doo3  0.189846  0.283218

In [275]: s0 = input_df.iloc[:,2:]
     ...: input_df.iloc[:,2:] = (s0 - s0.mean()) / (s0.max() - s0.min())
     ...: 

In [276]: input_df
Out[276]: 
      0     1         2         3
0  foo1  doo1  0.384592  0.437719
1  foo2  doo2  0.230817 -0.562281
2  foo3  doo3 -0.615408  0.124563

或者,要创建新输出,我们可以连接 -

ss,s0 = np.split(input_df,[2],axis=1)
df_out = pd.concat([ss,(s0 - s0.mean()) / (s0.max() - s0.min())],axis=1)