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

如何使用.startswith()方法在pandas DataFrame中创建新变量

错误原因分析

  • 第一个写法报错的原因:
    1. 用df(xxx)的写法是把DataFrame对象当成函数调用了,pandas中条件筛选需要用方括号[],不是圆括号
    2. 没有用.str访问器调用字符串方法,直接写subj.startswith无法识别subj是df的列,也无法对整列做字符串匹配
    3. 条件判断里的mean没有指定是df的mean列,会被识别为未定义的变量
  • 第二个写法无报错但无效果的原因:
    直接对DataFrame做遍历,默认遍历的是列名而非行值,所以循环里的subj实际是'subj'、'mean'两个列名字符串,自然无法匹配到a_subj开头的内容,所以赋值逻辑不会执行。

正确实现方案

如果你的需求是单独将符合条件的mean值存入变量mean_a,可以直接用pandas的条件筛选:

# 筛选subj列以'a_subj'开头的行,提取mean列的值,得到的是Series类型
mean_a = df.loc[df['subj'].str.startswith('a_subj'), 'mean']

# 如果你确定符合条件的只有一行,要直接得到标量数值,可加.iloc[0]
mean_a = df.loc[df['subj'].str.startswith('a_subj'), 'mean'].iloc[0]

如果你需要给原DataFrame新增mean_a列,对应np.where的正确写法如下:

import numpy as np
df['mean_a'] = np.where(df['subj'].str.startswith('a_subj'), df['mean'], '')

内容的提问来源于stack exchange,提问作者r.rodrigues18

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:54:06