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

Pandas逐行遍历问题:判断size列值为2的条件不触发如何修正

问题根因
  • df['size'] == 2返回的是布尔类型的Series序列(示例数据下结果为[False, True, False]),不是单个布尔值,因此(df['size'] == 2) is True的判断永远返回False,自然无法进入第一个条件分支。
  • 原有代码没有逐行遍历逻辑,直接对整列做判断,不符合逐行处理生成新列的需求。
修正代码

如果你要逐行判断,每行size等于2时对应行的col1取val1的值,其余行可按需求赋值(示例中其余行设为空值,你可以自行修改),修正后的代码如下:

# 逐行遍历DataFrame
for index, row in df.iterrows():
    if row['size'] == 2:
        df.loc[index, 'col1'] = row['val1']
        print("1")
    else:
        # 其余行的col1可按你的需求赋值,这里示例设为空
        df.loc[index, 'col1'] = None
        pass

如果你原本的逻辑不是逐行,而是只要整个size列存在等于2的值,就把整个col1列都设为val1,那仅修改原有代码的条件判断即可:

if (df['size'] == 2).any():
    df['col1'] = df['val1']
    print("1")
else:
    pass
验证结果

用你提供的示例数据运行修正后的逐行处理代码,得到的df结果如下:

idval1sizecol1
x11001NaN
x22002200
x33001NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:39:00