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

如何优化Pandas中按'-'拆分列并保留指定内容写回的代码

简洁处理DataFrame中Sector列的拆分需求

需求说明

将DataFrame的Sector列按'-'拆分:

  • 若列值包含'-',保留拆分后的最后一部分
  • 若列值不包含'-'或为np.NaN,保留原始值
  • 处理结果直接写回原列

示例数据

import pandas as pd
import numpy as np

# 示例DataFrame
data = [[1, '1010'], [2, 'CORP-1030'], [3, 'LLC-1020'], [4, np.NaN],[5, '1040']]
df = pd.DataFrame(data, columns=['ID', 'Sector'])

初始DataFrame:

ID     Sector
0   1       1010
1   2  CORP-1030
2   3   LLC-1020
3   4        NaN
4   5       1040

优化后的简洁解决方案

# 核心处理逻辑,一行完成
df['Sector'] = df['Sector'].str.split('-').str[-1]

代码解释

  • 借助pandas原生的字符串方法链,无需创建临时列、删除列等冗余操作,直接原地修改目标列
  • str.split('-'):将每个字符串按'-'拆分为列表;对于不含'-'的字符串,生成仅含原字符串的单元素列表;对于NaN值,直接返回NaN
  • str[-1]:提取列表的最后一个元素——既满足含'-'时取最后段的需求,也能在无'-'时返回原字符串,同时自动保留NaN值
  • 代码逻辑清晰,可读性强,执行效率远高于原方案的apply+临时列操作

处理后结果

ID Sector
0   1   1010
1   2   1030
2   3   1020
3   4    NaN
4   5   1040

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:20:38