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

如何通过带条件的循环为Pandas DataFrame创建新列?

Pandas 带条件创建新列的错误解决

错误原因

你的代码里两个问题导致了报错:

  • student_card['new'].append(v) 中,v是字符串,但Series.append()只能接收Series或DataFrame对象,不能直接拼接单个字符串,这就是触发TypeError的直接原因。
  • 初始化新列时student_card['new'] = pd.Series()会生成一个空Series,它的索引和原DataFrame不匹配,后续操作必然出问题。

正确实现方法

推荐:用Pandas向量化操作(高效)

Pandas原生支持向量化处理,完全不用循环,速度快还简洁:

import pandas as pd
student_card = pd.DataFrame({'ID':[20190103, 20190222, 20190531],
                             'name':['Kim', 'Yang', 'Park'],
                             'class':['H', 'W', 'S']})

# 满足条件时取name值,否则为NaN
student_card['new'] = student_card['name'].where(student_card['name'] == 'Yang')

若一定要用循环(仅作参考)

如果非要用循环实现,得改成直接索引赋值,别用append:

import pandas as pd
student_card = pd.DataFrame({'ID':[20190103, 20190222, 20190531],
                             'name':['Kim', 'Yang', 'Park'],
                             'class':['H', 'W', 'S']})

# 先把新列初始化为空值,保证长度和原表一致
student_card['new'] = pd.NA
for i, v in student_card['name'].items():
    if v == 'Yang':
        student_card.loc[i, 'new'] = v

运行后得到的结果:

IDnameclassnew
20190103KimH
20190222YangWYang
20190531ParkS

内容的提问来源于stack exchange,提问作者Se Bi Y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:10:20