如何优化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值,直接返回NaNstr[-1]:提取列表的最后一个元素——既满足含'-'时取最后段的需求,也能在无'-'时返回原字符串,同时自动保留NaN值- 代码逻辑清晰,可读性强,执行效率远高于原方案的
apply+临时列操作
处理后结果
ID Sector 0 1 1010 1 2 1030 2 3 1020 3 4 NaN 4 5 1040
内容的提问来源于stack exchange,提问作者Liu Yu
相关产品推荐
相关产品推荐

