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
相关产品推荐
相关产品推荐

