我使用以下代码来规范化数字pandas数据框。
df_norm = (input_df - input_df.mean()) / (input_df.max() - input_df.min())
现在我有了一个新的数据框,前两列是字符串。我想忽略前两列并对数据帧的其余部分执行规范化。有没有办法通过小修改重用上面的代码?谢谢!
答案 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)