Python实现Excel多CellName列重复值提取及Result列新增并导出高频值
Python处理CellName列重复值及高频值导出
核心功能实现步骤
1. 提取所有CellName列并统计全局出现次数
先定位所有CellName相关列,合并后统计每个值的全局出现次数,作为后续判断重复和高频值的基础。
import pandas as pd # 假设你的数据存储在DataFrame df中 # 提取所有CellName开头的列(可根据实际列名规则调整) cell_columns = [col for col in df.columns if col.startswith('CellName')] # 合并所有CellName列的数值为一个Series,自动忽略空值 all_cell_values = df[cell_columns].stack().dropna() # 统计每个CellName的出现次数 cell_frequency = all_cell_values.value_counts()
2. 生成Result列(标记全局重复的CellName)
遍历每行数据,收集该行CellName列中属于全局重复(出现次数>1)的值,存入Result列。
# 筛选出全局重复的CellName集合 duplicate_cell_set = set(cell_frequency[cell_frequency > 1].index) # 定义行处理逻辑,收集重复值并去重拼接 def extract_duplicate_cells(row): valid_cells = [cell for cell in row[cell_columns] if pd.notna(cell) and cell in duplicate_cell_set] return ','.join(set(valid_cells)) if valid_cells else None # 新增Result列 df['Result'] = df.apply(extract_duplicate_cells, axis=1)
3. 导出出现次数大于10的CellName值
筛选出高频CellName,导出为CSV或Excel文件。
# 筛选出现次数>10的CellName,重置索引并命名列 high_frequency_cells = cell_frequency[cell_frequency > 10].reset_index() high_frequency_cells.columns = ['CellName', 'Occurrence_Count'] # 导出到CSV文件 high_frequency_cells.to_csv('high_frequency_cell_names.csv', index=False) # 若需导出到Excel,取消下方注释 # high_frequency_cells.to_excel('high_frequency_cell_names.xlsx', index=False)
优化提示
- 若CellName列命名规则不是以
CellName开头,需修改cell_columns的筛选条件匹配实际列名 - 处理超大数据集时,可改用向量化操作替代
apply提升效率:df['Result'] = df[cell_columns].apply(lambda x: ','.join(set(x[x.isin(duplicate_cell_set)].dropna())), axis=1) - Result列的分隔符可根据需求替换为分号、换行符等
内容的提问来源于stack exchange,提问作者SOURA ELLE
相关产品推荐
相关产品推荐

