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

使用Python动态拆分字符串 重复拆分赋值代码如何改写为循环或函数

Pandas重复分割代码优化方案

你原来的写法存在冗余性能损耗:每生成一列就重复执行一次str.split('|'),相当于每行数据被分割了10次,数据量大时会浪费大量算力,完全可以优化为一次分割完成所有列生成。


方案1:原生Pandas最简写法(推荐,无需循环)

这是效率最高的实现,逻辑和你原代码完全一致,分割不足10个元素的位置会自动填充NaN:

import pandas as pd

# 一次分割直接生成10列的DataFrame,n=9表示最多分割9次,避免多余分割
split_brands = df['SAMPLES'].str.split('|', expand=True, n=9)
# 批量设置列名
split_brands.columns = [f'BRAND {i+1}' for i in range(10)]
# 合并到原DataFrame
df = pd.concat([df, split_brands], axis=1)

方案2:循环实现(适合需要自定义每列处理逻辑的场景)

如果必须用循环实现,也只需要执行一次分割操作,再循环赋值即可:

# 先统一完成全量分割
split_res = df['SAMPLES'].str.split('|')
# 循环赋值生成10列
for idx in range(10):
    df[f'BRAND {idx+1}'] = split_res.str[idx]

方案3:封装为通用复用函数

如果需要在多个场景复用该逻辑,可以封装为通用函数,支持自定义列名、分隔符、生成列数量等参数:

def split_column_to_multi(df, source_col: str, col_prefix: str, col_count: int, sep: str = '|') -> pd.DataFrame:
    """
    将DataFrame指定列按分隔符分割为多列,合并到原表后返回
    :param df: 原DataFrame
    :param source_col: 待分割的源列名
    :param col_prefix: 生成新列的名称前缀
    :param col_count: 需要生成的列数量
    :param sep: 分割符,默认是|
    """
    split_df = df[source_col].str.split(sep, expand=True, n=col_count-1)
    split_df.columns = [f'{col_prefix} {i+1}' for i in range(col_count)]
    return pd.concat([df, split_df], axis=1)

# 调用示例
df = split_column_to_multi(df, source_col='SAMPLES', col_prefix='BRAND', col_count=10)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:24:01