Python 如何从DataFrame单元格字符串中提取数字并检测重复值
解决方案
你可以通过两种方式实现单元格重复值检测,以下是可直接运行的代码实现:
方法1:ast解析结构化字符串(推荐)
完全按照列表结构解析内容,不会出现误匹配的问题:
import pandas as pd import ast def check_duplicate(cell): total_nums = [] # 遍历单元格内两个字符串格式的列表 for str_list in cell: # 将字符串转为真实的列表对象 num_list = ast.literal_eval(str_list) # 把字符串类型的数字转为整数后汇总 total_nums.extend([int(num) for num in num_list]) # 总长度和去重后的长度不一致即存在重复 return len(total_nums) != len(set(total_nums)) # 应用到你的DataFrame对应列,生成标记列 # 替换下方的`fight_num_col`为你存储该内容的列名 df['has_duplicate'] = df['fight_num_col'].apply(check_duplicate)
标记列has_duplicate取值为True即代表该单元格存在重复数字,不符合6个数字全唯一的要求。
方法2:正则匹配提取数字(写法更简洁)
如果你的单元格内不存在FightNum以外的其他数字,可以用更简单的正则提取方式:
import re def check_duplicate(cell): # 提取单元格内容中所有数字串,转为整数 nums = [int(num) for num in re.findall(r'\d+', str(cell))] return len(nums) != len(set(nums)) # 同样应用到对应列即可 df['has_duplicate'] = df['fight_num_col'].apply(check_duplicate)
内容的提问来源于stack exchange,提问作者Sedric Hibler
相关产品推荐
相关产品推荐

