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"]])
相关推荐
开开心心就好21 小时前
支持自定义名单的实用随机抽签工具
windows·计算机视觉·计算机外设·excel·散列表·启发式算法·csdn开发云
絆人心1 天前
Python 数据分析核心库:Pandas 与 NumPy 从入门到实战全指南(附电商用户分析完整代码)
python·数据挖掘·数据分析·numpy·pandas·数据处理·电商数据分析
李昊哲小课1 天前
Pandas数据分析 - 第十二章:性能优化
性能优化·数据挖掘·数据分析·pandas
李昊哲小课1 天前
Python办公自动化教程 - 第2章 单元格样式魔法 - 让表格变得美观专业
开发语言·python·excel·openpyxl
李昊哲小课1 天前
Pandas数据分析 - 第二章:Series 对象详解
数据挖掘·数据分析·pandas
孙同学20201 天前
如何将 JSON 数据转换为 Excel 工作表
python·json·excel
测试开发Kevin1 天前
Pandas 2.x核心技术—— Apache Arrow 高性能数据处理的基石
大数据·pandas
李昊哲小课1 天前
Pandas数据分析 - 第三章:DataFrame 对象详解
数据挖掘·数据分析·pandas
不会唱歌的拖拉机2 天前
使用Pandas进行RFM分析全过程
数据分析·pandas
奔跑的呱呱牛2 天前
前端/Node.js操作Excel实战:使用@giszhc/xlsx(导入+导出全流程)
前端·node.js·excel·xlsx·sheetjs