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

在pandas中实现str.split后生成含最后2个元素的非列表新列

解决pandas中str.split后列表形式转为非列表的问题

嘿,我懂你的困扰!你已经成功从每行里提取到了最后两个类别,但它们现在是以列表形式躺在新列里,看起来不太方便对吧?咱们分两种常见需求来解决:

需求1:把最后两个类别合并成单个字符串

如果你想让这两个类别用特定分隔符(比如斜杠、逗号)连起来变成一个字符串列,可以用str.join()方法直接把列表转成字符串。举个具体的例子:

假设你的原始代码是这样的:

import pandas as pd

# 模拟你的数据
df = pd.DataFrame({
    'category': ['电子/数码/手机/苹果', '服饰/男装/夹克', '食品/零食', '图书']
})

# 原来的代码:提取最后两个类别,得到列表形式
df['last_two_cats'] = df['category'].str.split('/').str[-2:]

现在只需要在后面加一步str.join(),指定你想要的分隔符就行:

# 用斜杠连接列表里的元素,转成字符串
df['last_two_cats_str'] = df['last_two_cats'].str.join('/')

运行后,last_two_cats_str列就会变成手机/苹果、男装/夹克、食品/零食、图书这样的字符串,而不是列表啦!

需求2:把最后两个类别分成两个独立的列

如果你想把第二个最后类别和最后类别分别放在两个新列里,那可以直接用expand=True参数把split的结果展开成DataFrame,再提取最后两列:

# 拆分后直接展开为多列,取最后两列赋值给新列
df[['second_last_cat', 'last_cat']] = df['category'].str.split('/', expand=True).iloc[:, -2:]

# 如果有的行不足两个类别(比如示例里的'图书'),可以用fillna填充空值
df[['second_last_cat', 'last_cat']] = df[['second_last_cat', 'last_cat']].fillna('')

这样你就会得到两个单独的列,second_last_cat对应倒数第二个类别,last_cat对应最后一个类别,完美解决列表的问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:56:04