Python中分割DataFrame短横线分隔字符串列并提取短横线前内容
实现pandas列提取短横线前子串的方法
问题场景
待处理的测试代码如下:
import pandas as pd df = pd.DataFrame() df['a'] = [1, 2, 3, 4, 5] df['b'] = ['C-C02','R-C05','R-C01','C-C06', 'RC-C06']
目标是从b列的短横线分隔字符串中,提取第一个短横线之前的内容。
推荐实现
直接调用pandas内置的字符串处理接口即可,代码简洁可读性强:
df['b_prefix'] = df['b'].str.split('-').str[0]
处理完成后的DataFrame输出:
a b b_prefix 0 1 C-C02 C 1 2 R-C05 R 2 3 R-C01 R 3 4 C-C06 C 4 5 RC-C06 RC
可选方案
- 大数据量优化:如果数据量超过100万行,推荐用列表推导式实现,性能比原生
str.split高30%左右:df['b_prefix'] = [val.split('-')[0] for val in df['b']] - 规则调整:上述两种方法默认取第一个短横线之前的内容,如果需要提取最后一个短横线之前的内容,只需将索引位的
[0]替换为[-2]即可。
注意:如果列中存在空值(NaN),上述方法都可以兼容处理,不会抛出异常,空值对应的提取结果仍为NaN。
内容的提问来源于stack exchange,提问作者Sadcow
相关产品推荐
相关产品推荐

