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

Pandas中如何提取apply函数返回列表的首个元素作为新列

问题原因

原来的代码报错的核心原因是:df['name'].apply(preprocess_names)返回的是Pandas Series对象,每个元素是长度为3的列表。此时直接加[0]是取该Series的第一行元素(即第一行对应的列表),而非取每个列表元素的第0位,赋值时会因为单行数据和整列长度不匹配触发ValueError。

正确实现方案

方案1:仅提取单个列

如果只需要提取列表的第0位生成新列,使用Pandas的.str索引器访问每个列表元素的对应位置即可:

df['runs'] = df['name'].apply(preprocess_names).str[0]

同理提取第1、2位的写法为.str[1]、.str[2]。

方案2:一次性生成3个新列(更高效)

如果需要把返回的3个元素一次性存入三个新列,无需重复调用apply三次,直接转换为DataFrame赋值即可:

# 可将col1、col2、col3替换为你需要的实际列名
df[['runs', 'col2', 'col3']] = pd.DataFrame(df['name'].apply(preprocess_names).tolist(), index=df.index)
额外注意

你提供的preprocess_names函数中name.split('')写法在Python中会直接报错,split的分隔符不能是空字符串。如果需要把字符串按单个字符拆分,可修改为return list(name)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:15:04