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

Python Pandas:为列表元素生成新列的代码问题排查

问题分析与解决

代码问题点

  • 函数逻辑错误:你的function里循环遍历names时,第一次判断就直接return了——不管当前行姓名是不是Tom,函数都会立刻返回结果,后面的Sarah、Bob根本没机会参与判断,导致函数本质上只在检查是否等于Tom。
  • 未传递目标姓名参数:循环给每个姓名列赋值时,你调用的function没有接收当前循环的n(也就是要判断的目标姓名),所以所有新列都用了同一个只判断Tom的逻辑,结果自然全和Tom列一样。

修正方案

方案一:修复原函数逻辑

给函数增加目标姓名参数,让它针对每个指定姓名做判断:

names=['Tom','Sarah','Bob']

def function(x, target_name):
    return 1 if x['Name'] == target_name else 0

for n in names:        
    df[n] = df.apply(lambda x: function(x, n), axis=1)

方案二:更高效的向量化写法(推荐)

Pandas支持直接对整列做向量化比较,比逐行apply快得多,适合大数据集:

names=['Tom','Sarah','Bob']

for n in names:
    df[n] = (df['Name'] == n).astype(int)

这里df['Name'] == n会生成布尔值的Series,astype(int)把True转成1,False转成0,一步到位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:54:18