Eda*_*ame 2 normalization python-3.x pandas
我正在使用以下代码规范化熊猫数据框:
df_norm = (df - df.mean()) / (df.max() - df.min())
Run Code Online (Sandbox Code Playgroud)
当所有列都是数字时,这可以正常工作。但是,现在我有一些字符串列,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
Run Code Online (Sandbox Code Playgroud)
然后,您可以将它们分配回原始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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1903 次 |
| 最近记录: |