发布:2026-11-14 · TIVIA
人工智能训练师三级实操学习中,数字转换成功不代表每条记录都有效。今天只观察一个自拟例子:三个文本“18”“oops”“20”,用pandas转换为数字,检查转换后的行数和缺失位置。
pd.to_numeric(raw, errors="coerce")会把本例能解析的文本转成数值,把不能解析的“oops”变为缺失值NaN。结果仍有三条,索引A、B、C也保留。中间那条出现缺失,不等于那一行已经被删除。
转换后仍保留三条记录
| 索引 | 原文本 | 本例转换结果 |
|---|---|---|
| A | “18” | 18.0 |
| B | “oops” | NaN |
| C | “20” | 20.0 |
本例在pandas 2.3.1执行,输出为A对应18.0、B对应NaN、C对应20.0。重点是行数仍为3,缺失值有1个;不能因为程序没有报错,就认为三个原文本都已经变成有效数值。
五条断言核对结果与原字段
import pandas as pd
raw = pd.Series(["18", "oops", "20"], index=["A", "B", "C"])
converted = pd.to_numeric(raw, errors="coerce")
assert len(converted) == 3
assert converted.isna().sum() == 1
assert converted.iloc[0] == 18 and converted.iloc[2] == 20
assert converted.index.equals(raw.index)
assert raw.tolist() == ["18", "oops", "20"]
print(converted)
样例在已有Python/pandas 2.3.1执行通过。需要pandas环境;断言是技术核验,不是学员学习效果。
先保留原始字段,再记录新增缺失的数量和位置,核对原文本为什么不能解析。是否修正、保留、填充或删去,需要另定业务规则;本例只转换并检查,不替你决定这些处理策略。
自拟填空:转换后仍有三条,缺失值数量应怎样检查?可填写converted.isna().sum()。本例结果为1。再解释一句:errors="coerce"处理解析失败,不是删行指令。
适用范围:本例只有三个自拟文本,使用默认数值后端;不处理带单位文本、特殊数值格式、大整数精度或真实业务约束。错误文本如何处理必须先核规则,不能把所有转换失败都自动填成0。
把转换和处理规则分开验收
今天只做一个验收动作:把“转换前行数、转换后行数、新增缺失位置、原字段是否保留”写在同一张检查表里。先核转换结果,再决定后续清洗,不只检查代码有没有运行完。
本文由TIVIA产品方发布,AI辅助整理并执行自拟代码核验。TIVIA包含理论题学习与上机代码填空等学习内容。本文借产品实操中的数字转换作基础延伸,非原题照搬、官方真题或考试通过承诺;完整范围以实际产品说明为准。
技术参考:pandas官方to_numeric文档。
Tivia