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

在Jupyter Notebook中用Python实现条件新字段的问题排查与优化

问题修正与优化方案

错误原因

你写的代码里犯了个基础错误:把'Field 2'当成了字符串常量,而不是DataFrame的列名。实际执行时是在判断Field 1列的每个值是否等于字符串"Field 2",而非和Field 2列对应位置的值做比较。这就导致第一个条件永远不成立,所有行都触发第二个赋值,结果全是"Yes"。另外代码里变量名混用了Df和df,也要统一。

修正后的.loc写法

把字符串'Field 2'换成列引用df['Field 2'],统一变量名:

df.loc[df['Field 1'] == df['Field 2'], 'New Field'] = 'No'
df.loc[df['Field 1'] != df['Field 2'], 'New Field'] = 'Yes'

更简洁的实现方式

方式1:用numpy.where(和Excel IF公式逻辑完全对应)

一行代码就能完成,可读性和效率都不错:

import numpy as np
df['New Field'] = np.where(df['Field 1'] == df['Field 2'], 'No', 'Yes')

方式2:布尔值直接映射

利用布尔序列的map方法快速转换,代码更简洁:

df['New Field'] = (df['Field 1'] != df['Field 2']).map({True: 'Yes', False: 'No'})

方式3:apply方法(适合复杂逻辑场景)

如果后续逻辑有扩展需求,用apply也能实现:

df['New Field'] = df.apply(lambda row: 'No' if row['Field 1'] == row['Field 2'] else 'Yes', axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:05:00