用 pandas.to_numeric(errors="coerce") 把无法解析的金额标出来,再用掩码筛出异常行。读 csv 时保留原始字符串,导出后可以区分空值和格式错误。
准备包含三种金额的 CSV
保存为 amounts.csv。订单号按文本读取,保留前导零。
order_id,amount 001,19.50 002, 003,unknown

示例接受有限数值。若金额必须符合特定小数位或货币格式,应另加业务规则。
保留原列并生成异常原因
在已安装 pandas 的环境中,将代码保存为 check_amounts.py。
import pandas as pd
df = pd.read_csv("amounts.csv", dtype="string", keep_default_na=False)
raw = df["amount"].str.strip()
numeric = pd.to_numeric(raw, errors="coerce")
blank = raw.eq("")
bad = numeric.isna() | numeric.isin([float("inf"), -float("inf")])
invalid = df.loc[bad].copy()
invalid["reason"] = "金额格式无效"
invalid.loc[blank.loc[invalid.index], "reason"] = "金额为空"
invalid.to_csv("invalid_amounts.csv", index=False)
原始金额列不会被转换结果覆盖。这个解析步骤用于筛查,精确记账还要用适当的金额表示。
核对导出的订单号和原因
执行脚本,检查输出文件。
python check_amounts.py
预期导出 002 和 003,原因依次为金额为空、金额格式无效。










