excel+pandas使用str.contains() 的典型例子

一、基础用法(精确 / 模糊匹配)

1. 模糊匹配包含指定字符

python 复制代码
import pandas as pd

# 模拟硅钢材质编号数据
df = pd.DataFrame({
    "material_code": ["35WW300", "50W470", "20JN200", "35WW250", "65W800"],
    "defect_type": ["表面划痕", "边缘毛刺", "氧化斑点", "划痕+变形", "无缺陷"]
})

# 匹配包含 "WW" 的材质编号(硅钢无取向牌号常见标识)
df["has_WW"] = df["material_code"].str.contains("WW")
print("包含'WW'的材质:")
print(df[df["has_WW"]][["material_code"]])

2. 忽略大小写匹配

python 复制代码
# 模拟带大小写的缺陷记录
df["defect_note"] = ["Scratch", "scratch", "SCRATCH", "Oxidation", "Burr"]

# 忽略大小写匹配 "scratch"(缺陷类型统一识别)
df["is_scratch"] = df["defect_note"].str.contains("scratch", case=False)
print("\n忽略大小写匹配'scratch':")
print(df[df["is_scratch"]][["defect_note"]])

二、正则表达式匹配(复杂场景)

1. 匹配多个关键词(缺陷类型多选一)

python 复制代码
# 匹配 "划痕" 或 "毛刺" 或 "氧化" 任一缺陷
df["has_common_defect"] = df["defect_type"].str.contains("划痕|毛刺|氧化")
print("\n含常见缺陷的记录:")
print(df[df["has_common_defect"]][["defect_type"]])

2. 匹配特定格式(材质编号正则校验)

python 复制代码
# 匹配硅钢牌号格式:2位数字 + 字母 + 3位数字(如 35WW300 简化匹配)
df["valid_code"] = df["material_code"].str.contains(r"^\d{2}[A-Za-z]{2}\d{3}$")
print("\n符合牌号格式的材质:")
print(df[df["valid_code"]][["material_code"]])

3. 匹配开头 / 结尾字符

python 复制代码
# 匹配以 "35" 开头的材质编号(特定厚度规格)
df["start_with_35"] = df["material_code"].str.contains(r"^35")

# 匹配以 "00" 结尾的材质编号(特定铁损等级)
df["end_with_00"] = df["material_code"].str.contains(r"00$")
print("\n以'35'开头且以'00'结尾的材质:")
print(df[df["start_with_35"] & df["end_with_00"]][["material_code"]])

三、处理缺失值与特殊情况

1. 缺失值处理(避免报错)

python 复制代码
# 模拟含缺失值的数据
df_with_na = pd.DataFrame({
    "material_code": ["35WW300", None, "50W470", pd.NA, "20JN200"]
})

# na=False:缺失值视为不匹配;na=True:缺失值视为匹配
df_with_na["has_WW"] = df_with_na["material_code"].str.contains("WW", na=False)
print("\n处理缺失值的匹配结果:")
print(df_with_na[["material_code", "has_WW"]])

四、实用技巧(硅钢工作场景延伸)

1. 匹配包含数字的缺陷描述

python 复制代码
# 模拟带尺寸的缺陷记录
df["defect_detail"] = ["划痕长度5mm", "毛刺高度2mm", "无具体尺寸", "氧化面积3cm²"]

# 匹配包含数字的缺陷详情(提取量化缺陷)
df["has_quantity"] = df["defect_detail"].str.contains(r"\d+")
print("\n含量化数据的缺陷详情:")
print(df[df["has_quantity"]][["defect_detail"]])

2. 排除特定关键词

python 复制代码
# 匹配包含 "WW" 但不含 "300" 的材质编号(筛选特定牌号范围)
df["target_material"] = df["material_code"].str.contains(r"WW(?!300)")
print("\n含'WW'且不含'300'的材质:")
print(df[df["target_material"]][["material_code"]])
相关推荐
Non-existent98715 天前
WPS批量清理单元格空白字符的4种方法-异常数字格式处理-实战
excel·wps
Channing Lewis15 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel
jarreyer15 天前
【数据分析绘图】excel绘图和bi工具区别
数据挖掘·数据分析·excel
chatexcel15 天前
ChatExcel Max使用教程:图片、PDF、网页与复杂Excel的一站式数据分析
数据分析·pdf·excel
cngkqy15 天前
excel从某一列中用match筛选匹配的数据
excel
qq_5469372715 天前
Excel批量转PDF_Word_图片,支持自动合并报表,效率翻倍。
pdf·word·excel
ai_coder_ai15 天前
在自动化脚本中操作excel文件
运维·自动化·excel
三千花灯15 天前
【Playwright】 自动化测试之参数化登录(Excel/CSV 数据源)
人工智能·机器学习·excel
罗政15 天前
AI工作流实现Excel全自动化(支持SQL)-案例:医院门诊排班表
人工智能·自动化·excel
小妖66615 天前
excel 怎么在单元格内容自动加上一段文字不能用公式
excel·vba