python-3.x - Pandas:在进行规范化时忽略字符串列

标签 python-3.x pandas normalization

我正在使用以下代码来规范化 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

关于python-3.x - Pandas:在进行规范化时忽略字符串列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44639442/

相关文章:

python - pandas 重复删除nans

python - 将操作数据帧的函数应用到 groupby

python - 将 pandas DataFrame 行与键/值对的字典进行匹配

java - 我如何控制 JFreeChart 中条形高度的规范化?

machine-learning - 如果我对训练数据执行数据预处理,是否有必要对测试数据执行相同的数据预处理?

sql - 规范化 SQL 表

python-3.x - 使用 Podio API 时出错 - 文件上传操作

python - 在二维列表中查找搜索值的坐标

python-3.x - 如何将联合索引映射到广义位置的对应索引?

python - 为什么在表达式字段中不允许生成器中未加括号的元组?