规范化Pandas数据框但跳过几列。

4
我正在使用以下代码来规范化数字pandas数据帧。
df_norm = (input_df - input_df.mean()) / (input_df.max() - input_df.min())

现在我有一个新的数据框,前两列是字符串。我想忽略前两列并对其余的数据框进行归一化处理。是否有一种方法可以在稍作修改的情况下重用上面的代码?谢谢!


1
请提供样本数据。 - Bharath M Shetty
1个回答

7

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


您可以从第二列开始使用切片 -

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接