广告

Pandas中删除分隔符前的字符串:四种常用实现方法与代码示例

核心主题:Pandas中删除分隔符前的字符串,提供四种常用实现方法与代码示例,便于在数据清洗环节高效处理文本字段。

1. 基于 str.split 的简单方法

核心思路与实现要点

在 Pandas 的字符串处理模块中,str.split 可以将字符串按分隔符拆分。设置 n=1 可以只分割一次,得到分隔符右侧的部分。使用 expand=True 或后续索引来获取右侧部分。

下面给出一个典型示例,假设列名为 col,分隔符为 ':',目标是删除 ':' 及其左侧的内容。

import pandas as pd
df = pd.DataFrame({'col': ['abc:123', 'def:456', 'no_delimiter']})
# 使用分割获取分隔符后的部分
result = df['col'].str.split(':', n=1, expand=True)[1]
print(result)

需要注意,当某些行中未出现分隔符时,第二列会返回 NaN,需按需处理。

2. 使用 str.partition 的实现

原理与步骤

str.partition 会将每个字符串分成三部分:beforesepafter。要删除分隔符前的内容,只需要取 after 列。

下面的示例展示如何在 DataFrame 的列上直接得到分隔符后的部分,分隔符为 ':'

df = pd.DataFrame({'col': ['abc:123', 'def:456', 'no_delimiter']})
after = df['col'].str.partition(':').iloc[:, 2]
print(after)

与 split 相比,partition 的结果对没有分隔符的情形更稳定,因为 after 列会是原始字符串或空字符串取决于实现。

3. 使用正则提取(str.extract)获取分隔符后的文本

正则表达式要点

通过正则表达式可以灵活地匹配分隔符后的文本。利用 lookbehind可以直接匹配分隔符后的内容,从而不包含分隔符本身。

下面是一个常用的写法,分隔符变量为 delimiter

import pandas as pd
import re
delimiter = ':'
df = pd.DataFrame({'col': ['abc:123', 'def:456', 'no_delimiter']})
pattern = rf'(?<={re.escape(delimiter)}).+'
extracted = df['col'].str.extract(pattern, expand=False)
print(extracted)

如果某些行没有分隔符,extract 将返回 NaN,可以结合填充策略处理。

Pandas中删除分隔符前的字符串:四种常用实现方法与代码示例

4. 使用正则替换(str.replace)去除前缀直到分隔符

替换实现要点

使用正则替换把前缀和分隔符一起删除,保留分隔符后的文本。'^.*?'+re.escape(delimiter) 这种非贪婪匹配确保只删除到首次出现的分隔符。

示例演示如何在 Series 上直接执行替换操作。

import pandas as pd
import re
delimiter = ':'
df = pd.DataFrame({'col': ['abc:123', 'def:456', 'no_delimiter']})
clean = df['col'].str.replace(r'^.*?' + re.escape(delimiter), '', regex=True)
print(clean)

注意:使用 replace 时如果分隔符不存在,文本将保持原样,不会报错。

广告

后端开发标签