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

Python实现排除TF及空值的单元格重复次数统计需求

解决方案:Python统计单元格重复次数(排除TF和空值)

没问题,我来帮你搞定这个问题。核心思路就是先过滤掉不需要的单元格值(空值和"TF"),再统计剩余值的重复情况,完全匹配你的需求。

步骤说明

  1. 先对每行数据做清洗:移除空值(包括None和空字符串)以及值为"TF"的元素
  2. 用collections.Counter高效统计清洗后每个值的出现次数
  3. 计算重复次数:单个值的重复次数 = 出现次数 - 1(出现1次不算重复);如果要总重复数,就把所有值的重复次数加起来

代码示例

假设你的数据是二维列表格式(比如从Excel读取后转换的结构),下面是完整实现代码:

from collections import Counter

def count_cell_duplicates(row):
    # 过滤空值和"TF",保留有效单元格
    cleaned_cells = [cell for cell in row if cell not in (None, "", "TF")]
    # 统计每个值的出现次数
    value_counts = Counter(cleaned_cells)
    # 计算各值的重复次数(仅保留出现多次的),以及总重复数
    duplicate_info = {val: cnt - 1 for val, cnt in value_counts.items() if cnt > 1}
    total_dup = sum(duplicate_info.values())
    return duplicate_info, total_dup

# 测试你给出的例子
row1 = ["", "A3", "A3", "TF", None]  # 第一行过滤后剩余["A3", "A3"]
row3 = ["A1", "A1", "B3", "B3", "B3", "TF", ""]  # 第三行过滤后剩余["A1","A1","B3","B3","B3"]

print("第一行统计结果:")
details1, total1 = count_cell_duplicates(row1)
print(f"各值重复次数:{details1},总重复数:{total1}")  # 输出:各值重复次数:{'A3': 1},总重复数:1

print("\n第三行统计结果:")
details3, total3 = count_cell_duplicates(row3)
print(f"各值重复次数:{details3},总重复数:{total3}")  # 输出:各值重复次数:{'A1': 1, 'B3': 2},总重复数:3

代码解释

  • cleaned_cells:用列表推导式快速筛掉无效值,只留需要统计的单元格
  • Counter(cleaned_cells):Python内置的工具类,能一键统计元素出现次数,比手动循环高效很多
  • duplicate_info:只保留出现次数大于1的值,用「出现次数-1」得到实际重复次数(比如出现2次就是重复1次)
  • total_dup:把所有值的重复次数相加,得到整行的总重复数

如果你的数据是从Excel读取的(比如用pandas或openpyxl),只需要把每行数据转换成列表传入这个函数就行,逻辑完全通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:18:48