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

遍历Pandas DataFrame时不覆盖已有标记结果的问题求解

问题根因

原有核心代码的错误来源于双重循环的遍历顺序错误:先遍历列、再遍历行的逻辑生成的列表是按「B1列所有行→B2列所有行→…→B5列所有行」的顺序拼接的一维序列,赋值给DataFrame新列时只会截取前N个(N为你的数据行数)元素,自然只能匹配到第一列的数值,后续列的匹配结果全部丢失。

可行解决方案

推荐使用Pandas向量化操作实现需求,性能远高于逐行遍历,代码如下:

import numpy as np

# 提取需要匹配的B1-B5列
target_cols = df[["B1", "B2", "B3", "B4", "B5"]]

# 遍历1-9生成标记列
for num in range(1, 10):
    # 逐行判断是否存在对应数值,存在则标记X否则为空
    df[num] = np.where(target_cols.eq(num).any(axis=1), "X", "")

如果你的数据量很小,也可以用apply方法修正原有逻辑:

for num in range(1, 10):
    df[num] = df.apply(lambda row: "X" if num in row[1:6].values else "", axis=1)

两种方案都可以实现「某行B1-B5列只要出现对应数值,标记列就填X」的需求,不会出现匹配结果丢失的问题。

内容的提问来源于stack exchange,提问作者ok-programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:39:02