结合硅钢工艺场景(比如处理 “原料批次号”“缺陷描述” 等字符串字段),整理pandas 中series最常用的 10 个 str 方法,每个方法配「代码示例 + 工艺场景说明」,直接复制可用:
一、核心 str 方法(按使用频率排序)
1.str.contains():判断字符串是否包含指定内容(最常用)
功能:筛选包含目标字符的行(支持正则)工艺场景:从缺陷描述中筛选含 “氧化”“裂纹” 的记录,返回布尔索引。
import pandas as pd # 模拟数据:硅钢生产记录 df = pd.DataFrame({ "原料批次": ["SG2024-056", "SG2024-078", "SG2025-012", "DT2024-033"], "缺陷描述": ["表面氧化皮严重", "边部裂纹", "无明显缺陷", "夹杂+轻微氧化"] }) # 筛选缺陷描述中含“氧化”的记录 oxidation_defects = df[df["缺陷描述"].str.contains("氧化")] print("含氧化缺陷的记录:") print(oxidation_defects)2.str.split():按分隔符拆分字符串[参数:expand]
功能:将字符串拆分为列表,可扩展为多列工艺场景:拆分 “原料批次号”(如 “SG2024-056” 拆分为 “SG”“2024”“056”)
# 拆分原料批次号(按“-”拆分) df["批次拆分"] = df["原料批次"].str.split("-") # 拆分为列表 df[["前缀", "年份", "序号"]] = df["原料批次"].str.split("-", expand=True) # 扩展为多列 print("\n拆分后的批次数据:") print(df[["原料批次", "前缀", "年份", "序号"]])3.str.strip()/str.lstrip()/str.rstrip():去除空白字符
功能:去除字符串前后 / 左侧 / 右侧的空格、换行符等工艺场景:清理手工录入的缺陷描述(避免多余空格影响统计)
# 模拟带空格的缺陷描述 df["缺陷描述_带空格"] = [" 表面氧化皮 ", "\n边部裂纹 ", "无明显缺陷\n"] # 去除前后空格和换行符 df["缺陷描述_清理后"] = df["缺陷描述_带空格"].str.strip() print("\n清理前后对比:") print(df[["缺陷描述_带空格", "缺陷描述_清理后"]])4.str.replace('旧内容','新内容'):替换字符串中的内容【regex默认为true】
功能:替换指定字符(支持正则)工艺场景:统一缺陷描述格式(如 “氧化”“氧化皮” 统一为 “氧化类缺陷”)
使用|做正则匹配时,需要regex=true
# 将“氧化”“氧化皮”统一替换为“氧化类缺陷” df["缺陷描述_统一"] = df["缺陷描述"].str.replace("氧化|氧化皮", "氧化类缺陷", regex=True) print("\n统一后的缺陷描述:") print(df[["缺陷描述", "缺陷描述_统一"]])批量替换用Series.replace(字典);
单值替换用str.replace(pat, repl)
cleaned_data["Country"] = cleaned_data["Country"].replace({ "USA": "United States", "UK": "United Kingdom", "U.K.": "United Kingdom" }) # 正则批量替换 cleaned_data["Country"] = cleaned_data["Country"].replace( {r"UK|U\.K\.": "United Kingdom"}, regex=True )5.str.upper()/str.lower()/str.title():大小写转换
功能:转换字符串大小写(中文无效果,适用于英文字段)工艺场景:统一英文批次前缀(如 “sg”“SG” 统一为大写)
# 统一前缀为大写 df["前缀_大写"] = df["前缀"].str.upper() print("\n前缀大写转换:") print(df[["前缀", "前缀_大写"]])6.str.len():计算字符串长度
功能:返回每个字符串的字符数工艺场景:筛选过长的缺陷描述(可能是录入错误)
# 计算缺陷描述的长度 df["描述长度"] = df["缺陷描述"].str.len() # 筛选长度>8的描述(可能是录入冗余) long_descriptions = df[df["描述长度"] > 8] print("\n过长的缺陷描述:") print(long_descriptions[["缺陷描述", "描述长度"]])7.str.startswith()/str.endswith():判断开头 / 结尾字符
功能:判断字符串是否以指定字符开头 / 结尾工艺场景:筛选特定年份的批次(如 2024 年的批次,以 “2024” 开头)
# 筛选2024年的原料批次(年份字段以“2024”开头) 2024_batches = df[df["年份"].str.startswith("2024")] print("\n2024年的原料批次:") print(2024_batches["原料批次"])8.str.join():用分隔符拼接序列里所有元素为字符串
功能:可迭代:列表、元组、字符串、生成器,所有元素必须全是 str
# 1.逗号分隔列表 lst = ["a","b","c"] res = ",".join(lst) print(res) # a,b,c # 2.空字符拼接=直接连起来 "".join(["1","2","3"]) # '123' #3.字符串迭代 "-".join("abc") # 'a-b-c'9.str.cat():拼接字符串
功能:将多列字符串拼接为一列工艺场景:将 “前缀 + 年份 + 序号” 拼接为完整批次号
# 拼接“前缀+年份+序号”为完整批次号 df["拼接批次号"] = df["前缀"].str.cat([df["年份"], df["序号"]], sep="-") print("\n拼接后的批次号:") print(df[["前缀", "年份", "序号", "拼接批次号"]])10.str.slice():参数和 Python 原生字符串切片完全一致,只是批量作用于 Series 每一行。
Series.str.slice(start, stop, step)
str.slice()的参数可省略,等价于原生切片:
| 简化写法 | 等价原生切片 | 含义 |
|---|---|---|
str.slice(0, 3) | s[0:3] | 前 3 个字符 |
str.slice(-3) | s[-3:] | 后 3 个字符 |
str.slice(1, -1) | s[1:-1] | 去掉第一个和最后一个字符 |
str.slice(step=2) | s[::2] | 步长 2 取所有字符 |
补充:Pandas 支持更简洁的
str[]写法(等价于slice),比如
df['code'].str[0:1]等价于df['code'].str.slice(0,1)日常使用中
str[]更简洁,但slice()语义更清晰(尤其步长复杂时)。
二、核心总结
- 最常用 Top3:
str.contains()(筛选)、str.split()(拆分)、str.replace()(替换),覆盖 80% 工艺场景。 - 正则搭配:
str.extract()(提取)、str.contains()(模糊匹配)支持正则,处理复杂字符串(如批次号、缺陷描述)超实用。
三、tips
1、字符串反转 str[::-1]
s = "abc123" res = s[::-1] print(res) # '321cba'