You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas处理数据集中数值列混入字符串的问题

问题背景

处理数据集时,其中某列存在混合字符串和数字的取值,执行缺失值替换、异常值计算操作时均出现错误。
样例数据集如下:

1.99    LOHARU  0.3 2   0   2   0.3 5   2   0   2   2
1.99    31  0.76    2   0   2   0.76    5   2   7.48    4   2
1.99    4   0.96    2   0   2   0.96    5   2   9.45    4   2
1.99    14  1.26    4   0   2   1.26    5   2   0   2   2
1.99    NUH 0.55    2   0   2   0.55    5   2   0.67    2   2
1.99    99999   0.29    2   0   2   0.29    5   2   0.06    2   2

问题1:99999未被替换为NaN

你原先使用的代码:

# 将0和99999替换为NAN
dataset[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]]=dataset[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]].replace(99999,np.NaN)

#if 12,14和17可以有零值则执行以下替换
dataset[[0,1,2,3,4,5,6,7,8,9,10,11,13,15,16]]=dataset[[0,1,2,3,4,5,6,7,8,9,10,11,13,15,16]].replace(0,np.NaN)

print(Dataset.isnull().sum())

故障原因

  • 数据类型不匹配:索引为1的列混合了字符串和数字,整体为object类型,其中的99999是字符串格式'99999',你替换的目标是整数99999,类型不一致导致匹配失败。
  • 变量名大小写错误:代码中变量名一会写dataset一会写Dataset,大小写不一致会触发找不到变量的报错。

修复方案

替换时同时匹配字符串和数字格式的目标值,统一变量名:

import numpy as np
# 同时替换整数和字符串格式的99999、0
replace_values = {99999: np.nan, '99999': np.nan, 0: np.nan, '0': np.nan}
cols_all = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
dataset[cols_all] = dataset[cols_all].replace(replace_values)
print(dataset.isnull().sum())

问题2:计算zscore时报TypeError: unsupported operand type(s) for /: 'str' and 'int'

你原先使用的代码:

import scipy.stats as stats
array = Dataset.values
Z=stats.zscore(array)

故障原因

数据集包含字符串类型的列(比如索引为1的列里的LOHARU、NUH等值),直接把整个数据集转成数组后存在字符串元素,无法参与数值运算。

修复方案

只选取数值列计算zscore,或者将可转数值的列转换为数值类型后再计算:

import pandas as pd
# 方法1:排除明确的非数值列,比如索引为1的列
numeric_cols = dataset.columns.drop(1)
# 把选中列统一转成数值类型,不能转的自动设为NaN
numeric_data = dataset[numeric_cols].apply(pd.to_numeric, errors='coerce')
# 可根据需求先填充缺失值再计算zscore,这里示例直接删除全空列
Z = stats.zscore(numeric_data.dropna(axis=1, how='all'))

内容的提问来源于stack exchange,提问作者ashish_goy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:36:04