Pandas教学-6:coerce详解

coerce 详解------"强行扭转"的意思

一、英文本义

coerce 读作 /kəʊˈɜːs/(扣-厄斯),动词,本义是"强制、迫使、用强力扭转"。

词源来自拉丁语 coercere = co- (一起)+ arcere (约束、压制),字面意思是"强行关到一个框里"。

日常生活中:coerce sb. into doing sth. = 胁迫某人做某事。

二、编程里的 coerce:强制类型转换

在程序世界,coerce 特指把数据强行扭转 成另一种类型,中文叫"强制转换":

复制代码
"123"  ──coerce──►  123        字符串硬转成数字
True   ──coerce──►  1          布尔值硬转成数字
"abc"  ──coerce──►  ???        转不成数字怎么办?

关键就在最后一行:转不过去的时候怎么办 ?pandas 给了三种态度,由 errors 参数控制:

errors 取值 态度 遇到 "abc" 转数字 比喻
"raise"(默认) 报错罢工:我转不了,程序直接崩溃 抛 ValueError 严格的老师:题目有问题,我拒绝批改
"ignore" 视而不见:整列原样退回,什么都不转 保持 "abc" 原样 和稀泥:算了算了,都别动
"coerce" 强行处理 :转得过去就转,转不过去的强制标记为"缺失" 变成 NaN 务实的老师:能改的改,改不了的标红挂起,不耽误全班

所以 coerce 的完整含义是:

能转的照常转,转不动的不强转成假数据,而是统一"扭成"缺失值标记(NaN / NaT),保证流程继续往下走。

三、对应到你案例6里的代码

python 复制代码
pd.to_datetime(df["下单日期"], format="mixed", errors="coerce")

意思就是:

复制代码
"2024-03-05"   ──能转──► 2024-03-05(真正的日期)
"20240308"     ──能转──► 2024-03-08
"二零二四年"    ──转不动──coerce──► NaT(Not a Time,日期版的"空")

这个 NaT 就是 coerce 强行扭转后的产物------它不是报错,而是一个"我认识到这是空日期 "的记号,后面可以用 .isna() 把这些坏值找出来,再用 fillna() 统一兜底:

python 复制代码
df["下单日期"] = df["下单日期"].fillna(pd.Timestamp("2024-03-01"))

同样的写法在 to_numeric 里也出现过(case03 工资列里的 "abc"):

python 复制代码
pd.to_numeric(df["工资"], errors="coerce")   # "abc" -> NaN,然后用中位数填充

四、一个对比小实验(课堂可直接演示)

python 复制代码
s = pd.Series(["12", "34", "abc"])

pd.to_numeric(s, errors="raise")     # 直接报错,整个程序中断
pd.to_numeric(s, errors="ignore")    # 原样退回:["12","34","abc"],等于没洗
pd.to_numeric(s, errors="coerce")    # [12, 34, NaN] ← 数据清洗唯一实用选择

五、一句话记忆

raise 是"报错停车",ignore 是"假装没看见",coerce 是"过安检"------合格的放行,不合格的统一扣下(标记 NaN/NaT),后续再集中处理。

这也是为什么做数据清洗时几乎总是用 coerce:它既不会让一个坏值毁掉整个程序,又不会放过坏值,而是把它们显式暴露成缺失值,交给你决定删除还是填充。

相关推荐
梦在远山后1 小时前
Electron 与 FastAPI 如何完成流式 Agent 对话
python·langchain·agent
大衛說1 小时前
12 · 文件 I/O 与序列化
python
小静AI工程实验室1 小时前
Python 爬虫中文乱码排查:严格解码、UTF-8 BOM 与 JSON 转义的 12 项实验
字符编码·爬虫·python
天天被压力1 小时前
【跨市场数据实战 #08】可转债折价机会怎么筛:3个接口抓比价、列表和实时盘口
java·人工智能·python
weixin199701080161 小时前
[特殊字符]️《从0到1搭多平台二手ERP中台:闲鱼+淘宝+京东+拼多多+Mercari统一调度》(附Python源码)
python
王国强20091 小时前
uv 深入指南:重新理解 Python 的包管理、依赖解析与项目工程化
python
巡山小钻风来也1 小时前
【保姆级教程】自定义数据集微调PP-OCRv6文本检测模型
python·ocr·paddlepaddle
baopixiaoz2 小时前
BeeQuant × BeeAgent:用AI加速策略验证
大数据·人工智能·python·区块链
浩瀚地学2 小时前
deepagents学习打卡day04
python·agent