如何在不删除整行的前提下去除单元格内重复值及超4位字符
实现方案
使用pandas可直接完成该需求,无需删除整行,处理后列仍保持字符串类型,核心处理逻辑为逐单元格拆分、过滤、去重、再拼接。
处理逻辑
对counts列的每个单元格值依次执行以下操作:
- 按空格拆分为单个值的列表,自动过滤拆分产生的空值(适配原始数据末尾带多余空格的情况)
- 过滤掉长度超过4个字符的值
- 去除重复值,保留值首次出现的原有顺序
- 将处理后的值用空格重新拼接为字符串,写回原单元格
完整代码
import pandas as pd # 读取/构造原始数据 df = pd.DataFrame({ 'company': ['company1', 'company2'], 'counts': [ '2222 2222 45345234 425352352352 6574745 299', '9909 4363465246 543 323 9909 3454534534 768 ' ] }) def process_str_cell(content: str) -> str: item_list = [seg for seg in content.split(' ') if seg] filter_res = [] record = set() for item in item_list: if len(item) > 4: continue if item in record: continue record.add(item) filter_res.append(item) return ' '.join(filter_res) df['counts'] = df['counts'].apply(process_str_cell)
处理结果
执行代码后输出的DataFrame与期望结果完全一致:
company counts 0 company1 2222 299 1 company2 9909 543 323 768
说明
- 处理过程不会删除任何整行数据,即使某行
counts列过滤后无符合条件的值,该行也会保留,对应单元格值为空字符串 - 处理后
counts列数据类型仍为字符串,不会变为列表或其他格式 - 自动兼容原始字符串前后、中间存在多余空格的场景,拼接后不会产生冗余空格
内容的提问来源于stack exchange,提问作者Munrock
相关产品推荐
相关产品推荐

