在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
相关产品推荐
相关产品推荐

