如何在Pandas中高效拆分DataFrame列以生成多列?
高效拆分Pandas列的优化方案
问题场景
需要从列df['A']中拆分出df['B']和df['C'],原代码因重复调用split,在大数据量下性能不佳:
df['B'] = df['A'].split("_").str[0] df['C'] = df['A'].split("_").str[1]
优化方案
1. 单次str.split配合expand=True(推荐)
仅执行一次拆分操作,直接生成多列并赋值,避免重复计算:
df[['B', 'C']] = df['A'].str.split('_', expand=True)
expand=True会将拆分结果转为DataFrame,直接映射到目标列,是最简洁高效的常规方案。
2. 正则表达式提取(适合格式固定场景)
如果df['A']的格式严格为[前缀]_[后缀],可以用正则精准匹配提取,无需拆分后再索引:
df[['B', 'C']] = df['A'].str.extract(r'^([^_]+)_([^_]+)$', expand=True)
该方法在格式无异常的场景下,性能与split(expand=True)接近,且逻辑更直观。
3. 超大数据量进阶写法
若数据量达到千万级以上,可通过tolist()转换后构造DataFrame,性能表现与第一种方案一致:
split_result = df['A'].str.split('_').tolist() df[['B', 'C']] = pd.DataFrame(split_result, index=df.index)
内容的提问来源于stack exchange,提问作者tacona1016
相关产品推荐
相关产品推荐

