2026-09-29 · 喵窝资源铺 · 实测可运行(Python 3.8+,需 pandas)
拿到手一份几千行的表:重复行、手机号带空格、日期三种格式混着来……手动改要半天。下面3段脚本是我做数据清洗时最常用的,复制就能跑。
import pandas as pd
df = pd.read_excel("脏数据.xlsx")
df = df.dropna(how="all") # 删整行全空
df = df.drop_duplicates(subset=["手机号"]) # 按关键列去重(换成你的列名)
df.to_excel("去重后.xlsx", index=False)
print(f"原始 {len(pd.read_excel('脏数据.xlsx'))} 行 → 剩 {len(df)} 行")
df["手机号"] = df["手机号"].astype(str).str.replace(r"\D", "", regex=True)
df["日期"] = pd.to_datetime(df["日期"], errors="coerce") # 三种混写格式一次吃下
df = df[df["日期"].notna()] # 解析失败的行单独检查
df["日期"] = df["日期"].dt.strftime("%Y-%m-%d")
split = df["联系人"].str.extract(r"(?P<姓名>[\u4e00-\u9fa5]+)\s*(?P<电话>[\d\- ]+)") df = pd.concat([df.drop(columns=["联系人"]), split], axis=1)
df.dtypes 看一眼再动手。drop_duplicates 不给 subset 会按所有列去重,可能误删。dtype=str 读,避免 pandas 自作聪明转类型。虚拟物品交付后不退款;未收到或未达承诺免费补发/重做。