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

如何在Pandas DataFrame中按'|'拆分列值并生成新列(仅取前两个)

解决方案

你的代码报错是因为df['Category'].str.split('|')返回的是包含列表的Series对象,直接调用.get(0)会尝试获取整个Series的第0个元素,而不是每个列表里的第一个元素,自然会出错。以下是两种可行的解决方法:

方法1:利用Series.str索引提取元素

直接通过.str[index]访问每个列表里的对应位置元素:

df['Main'] = df['Category'].str.split('|').str[0]
df['Sub'] = df['Category'].str.split('|').str[1]

方法2:用expand参数直接拆分并赋值(更高效)

使用expand=True将拆分结果直接展开为DataFrame,再取前两列赋值给新列,避免重复调用str.split:

# 拆分后取前两列,命名为Main和Sub
df[['Main', 'Sub']] = df['Category'].str.split('|', expand=True).iloc[:, :2]

补充:处理拆分后元素不足的情况

如果部分行的Category值拆分后不足2个元素,新列会出现NaN,可以用fillna填充空值:

df[['Main', 'Sub']] = df['Category'].str.split('|', expand=True).iloc[:, :2].fillna('')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:48:12