You need to enable JavaScript to run this app. 不使用numpy/pandas实现字符串缺失值'_'均等填充的算法求助
优惠活动
大模型
产品
解决方案
定价
更多

不使用numpy/pandas实现字符串缺失值'_'均等填充的算法求助

缺失值填充实现方案(不依赖numpy/pandas)

实现逻辑

我们按照从左到右的分段填充规则处理,核心步骤如下:

  • 先把输入的逗号分隔字符串拆分转换为列表,识别所有非缺失值的下标和对应数值
  • 处理开头缺失段:如果第一个数字不在列表最左侧,将该数字均分给从列表开头到该数字位置的所有元素
  • 处理中间段:遍历每一组相邻的数字,将两个数字的总和均分给两个数字所在位置之间的所有元素(包含两个数字本身的位置)
  • 处理结尾缺失段:如果最后一个数字不在列表最右侧,将该数字均分给从该数字位置到列表末尾的所有元素

实现代码

def fill_missing_values(input_str):
    # 预处理输入字符串,转换为统一格式的列表
    raw_items = [item.strip() for item in input_str.split(',')]
    arr = []
    for item in raw_items:
        arr.append(int(item) if item != '_' else None)
    total_len = len(arr)
    # 收集所有非缺失值的索引和数值
    not_null = [(idx, val) for idx, val in enumerate(arr) if val is not None]

    # 填充开头缺失部分
    first_idx, first_val = not_null[0]
    if first_idx > 0:
        avg_val = first_val / (first_idx + 1)
        for i in range(first_idx + 1):
            arr[i] = avg_val

    # 填充中间相邻非缺失值之间的部分
    for i in range(len(not_null) - 1):
        left_idx, left_val = not_null[i]
        right_idx, right_val = not_null[i + 1]
        sum_val = left_val + right_val
        seg_len = right_idx - left_idx + 1
        avg_val = sum_val / seg_len
        for j in range(left_idx, right_idx + 1):
            arr[j] = avg_val

    # 填充结尾缺失部分
    last_idx, last_val = not_null[-1]
    if last_idx < total_len - 1:
        avg_val = last_val / (total_len - last_idx)
        for i in range(last_idx, total_len):
            arr[i] = avg_val

    return arr

测试效果

你可以直接调用函数测试给定的示例:

  • 示例1输入:fill_missing_values("_, _, _, 24")
    输出:[6.0, 6.0, 6.0, 6.0]
  • 示例2输入:fill_missing_values("40, _, _, _, 60")
    输出:[20.0, 20.0, 20.0, 20.0, 20.0]
  • 示例3输入:fill_missing_values("80, _, _, _, _")
    输出:[16.0, 16.0, 16.0, 16.0, 16.0]
  • 示例4输入:fill_missing_values("_, _, 30, _, _, _, 50, _, _")
    输出:[10.0, 10.0, 12.0, 12.0, 12.0, 12.0, 4.0, 4.0, 4.0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 10:15:10