You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何提取含数字字符列中特殊字符前的唯一字符串值

解决Pandas DataFrame提取指定列特定唯一字符串的问题

修正数据源

原示例数据中第二个字符串缺少逗号,导致两个字符串被Python自动拼接,修正后的数据如下:

data1 = {
    'column_with_names': ['lala :56 javcejhv', 'lala56 : javcejhv', 'li :lo 7TUF', 'lo','lala :59 lzenvke','la','lala','lalalo'],
}

实现步骤与代码

通过正则提取目标片段、过滤纯数值、去重三步完成需求:

import pandas as pd
import re

# 修正后的数据源
data1 = {
    'column_with_names': ['lala :56 javcejhv', 'lala56 : javcejhv', 'li :lo 7TUF', 'lo','lala :59 lzenvke','la','lala','lalalo'],
}

df1 = pd.DataFrame(data1)

# 提取字符串开头到第一个非单词字符的部分
def extract_prefix(s):
    match = re.match(r'^\w+', str(s))
    return match.group() if match else None

# 应用处理函数到目标列
df1['processed'] = df1['column_with_names'].apply(extract_prefix)

# 过滤纯数值结果,提取唯一值集合
unique_result = set(df1[~df1['processed'].str.match(r'^\d+$', na=False)]['processed'])

print(unique_result)

输出结果

运行代码后会得到符合期望的唯一值集合:

{'la', 'lala', 'lala56', 'lalalo', 'li', 'lo'}

关键逻辑说明

  • re.match(r'^\w+', str(s)):匹配字符串开头的连续字母/数字/下划线,精准截取特殊字符(空格、冒号等)之前的内容
  • ~df1['processed'].str.match(r'^\d+$', na=False):筛选掉纯数值的结果,满足“排除数值相关内容”的要求
  • set():快速实现唯一值去重,得到最终集合

内容的提问来源于stack exchange,提问作者yoopiyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:01:12