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"]])
相关推荐
远洪13 小时前
excel 找出两列不同的数据
excel
pcplayer13 小时前
非常好用的 Excel 读写控件
excel·delphi·office
Navicat中国17 小时前
使用 Navicat 导入向导导入 Excel 数据时,系统提示导入成功,表中也能看到数据,但行数统计显示为 0,这是什么原因?
数据库·excel·导入
穿着内裤的外星人19 小时前
触控精灵远程读写Excel步骤配置
excel
是孑然呀1 天前
【小记】excel vlookup一对多(第二篇)
excel
开开心心就好1 天前
专为视障人士设计的免费辅助工具
windows·计算机视觉·计算机外设·excel·散列表·推荐算法·csdn开发云
transformer_WSZ1 天前
excel两列数据绘制折线图
excel·折线图
蒋胜山1 天前
Excel 练习题(5)
经验分享·excel
Data-Miner2 天前
数以轻舟聚焦Excel-Agent场景:当AI做表工具学会说人话
人工智能·excel
夏日清风有你2 天前
Excel 中绘制散点图(Scatter Plot)
excel