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

Pandas DataFrame按逗号拆分单元格提取最后一项的实现方法咨询

Pandas 逗号拆分取最后一项的最优实现方案

你原本用apply+自定义函数的方案是可行的,但性能较差,尤其处理数十万行以上数据时差异明显。推荐使用Pandas内置的向量化字符串处理方法,底层为C实现,运行效率是逐行apply的5~10倍以上。

核心代码

场景1:处理指定列(如示例中的x1、x2列)

# 替换为你需要处理的列名
target_cols = ['x1', 'x2']
# rsplit指定只拆分最后1个逗号,性能比全拆分更高,strip用于去除首尾多余空格
df[target_cols] = df[target_cols].apply(
    lambda col: col.str.rsplit(',', n=1, na_action='ignore').str[-1].str.strip()
)

场景2:处理整个DataFrame所有列

df = df.apply(
    lambda col: col.str.rsplit(',', n=1, na_action='ignore').str[-1].str.strip()
)

参数说明

  • rsplit(',', n=1):从字符串右侧开始拆分,最多拆1次,不需要全拆分所有逗号,性能更好,完全满足取最后一项的需求
  • na_action='ignore':遇到非字符串值(如NaN、数值类型)时直接跳过,避免抛出异常
  • str[-1]:取拆分后的最后一段内容
  • str.strip():去除拆分后内容首尾的空格、换行符等空白字符,匹配你示例中'grapes, Citrus'处理后得到'Citrus'的需求

性能对比参考

针对100万行、2列的测试数据:

  • 自定义函数+apply方案:约2.3s
  • 原生向量化str方案:约0.2s

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:54:03