Pandas:在做规范化处理时忽略字符串列[英] Pandas: Ignore string columns while doing normalization

本文是小编为大家收集整理的关于Pandas:在做规范化处理时忽略字符串列的处理方法,想解了Pandas:在做规范化处理时忽略字符串列的问题怎么解决?Pandas:在做规范化处理时忽略字符串列问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在使用以下代码来规范化 pandas 数据框:

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

当所有列都是数字时,这可以正常工作.但是,现在我在 df 中有一些字符串列,并且上面的规范化出现了错误.有没有办法只对数据框的数字列执行这种规范化(保持字符串列不变)?谢谢!

推荐答案

您可以使用 select_dtypes 计算所需列的值:

df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c'], 'c': [4, 5, 6]})

df

   a  b  c
0  1  a  4
1  2  b  5
2  3  c  6

df_num = df.select_dtypes(include=[np.number])

df_num

   a  c
0  1  4
1  2  5
2  3  6

然后你可以将它们分配回原来的df:

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


df[df_norm.columns] = df_norm

df

     a  b    c
0 -0.5  a -0.5
1  0.0  b  0.0
2  0.5  c  0.5

本文地址:https://www.itbaoku.cn/post/1728002.html