清洗销售明细表时最常踩的三个坑

合并单元格、日期格式混乱、数值被存成文本——几乎每份从业务系统导出来的表都会中招。

更新于 2026-08-31 01:56·12 次阅读

每次拿到业务同事导出来的 Excel,我都要先花二十分钟做同样的事。写下来,以后照着做。

一、合并单元格

表格里看着整整齐齐的合并单元格,读进 pandas 之后只有左上角那一格有值,其余全是空。

df["部门"] = df["部门"].ffill()

向下填充就能还原。但前提是原表确实按顺序合并,先扫一眼再填,不然会把不相干的行也带上。

二、日期格式不统一

同一列里混着 2026/1/52026-01-0520260105,甚至还有 Excel 的日期序列号 45678

原始形态 处理办法
各种文本日期 pd.to_datetime(s, errors="coerce")
Excel 序列号 先转成数字,再按 1899-12-30 起算天数

关键是先用 errors="coerce" 把转不动的变成空值,再单独把这批异常捞出来看。比一上来就写复杂正则省事得多,也不容易误伤。

三、数值被存成了文本

金额列里藏着空格、千分位逗号、全角字符,求和出来是拼接而不是加总。

df["金额"] = (df["金额"].astype(str)
              .str.replace(r"[,\s¥]", "", regex=True)
              .pipe(pd.to_numeric, errors="coerce"))

清洗完一定要跟原表的合计对一次。对不上,说明中间悄悄丢了行。这一步别省。