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

如何根据三列中2/3列存在的单位符号补全剩余非空列的单位

CSV单位补全实现方案

需求确认

你需要对给定的三列CSV数据按如下规则处理:

  • 某行3列中2列含单位K,剩余1列非空时,给该列补K
  • 某行3列中2列含单位B,剩余1列非空时,给该列补B
  • 某行3列中2列含单位M,剩余1列非空时,给该列补B(若此处为笔误需要补M,可直接修改代码里的单位映射值)
  • 空单元格不做任何处理

实现代码(Python)

无需安装额外依赖,直接用Python内置csv模块即可实现:

import csv

# 单位映射配置,可根据实际需求修改
unit_map = {
    'K': 'K',
    'B': 'B',
    'M': 'B'
}

# 读取原始文件,处理后写入新文件
with open('input.csv', 'r', encoding='utf-8') as in_f, open('output.csv', 'w', encoding='utf-8', newline='') as out_f:
    reader = csv.reader(in_f)
    writer = csv.writer(out_f)
    
    # 先写入前两行表头、类型行不做处理
    header = next(reader)
    writer.writerow(header)
    type_row = next(reader)
    writer.writerow(type_row)
    
    # 遍历处理数据行
    for row in reader:
        # 取前三列,不足的补空
        col1, col2, col3 = (row + ['', ''])[:3]
        cells = [col1.strip(), col2.strip(), col3.strip()]
        
        # 统计各单位出现次数
        unit_count = {'K':0, 'B':0, 'M':0}
        for cell in cells:
            if not cell:
                continue
            for u in unit_count.keys():
                if u.lower() in cell.lower():
                    unit_count[u] += 1
                    break
        
        # 检查是否有单位出现2次
        target_unit = None
        for u, cnt in unit_count.items():
            if cnt == 2:
                target_unit = u
                break
        
        if target_unit:
            add_unit = unit_map[target_unit]
            for i in range(3):
                cell = cells[i]
                # 非空、且没有对应单位的单元格补单位
                if cell and target_unit.lower() not in cell.lower():
                    cells[i] = cell + add_unit
        
        # 写入处理后的行
        writer.writerow(cells)

处理后结果示例

按照你的规则处理后,你给出的示例数据集输出结果如下:

column1, column 2, column 3
chr,chr,chr
220K,230k,560k
,5M,10M
,0.5,0.8
3,3.3,3.5
8B,10B,7B
,5B,7B
5M,,8M

注意事项

  1. 代码默认匹配单位时不区分大小写,即k和K视为同一种单位
  2. 若规则3中2个M匹配后需要补M而非B,只需把unit_map里的'M': 'B'修改为'M': 'M'即可
  3. 代码默认跳过前两行(表头和chr类型行),如果你的实际数据没有类型行,删除对应的next(reader)和写入类型行的代码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:24:02