Python Pandas迭代拆分多列并自动生成命名新列的解决方案
批量拆分多列实现方案
核心逻辑是预先定义所有需要拆分的列,遍历拆分后自动命名新列,再合并回原表,无需针对单列手动编码。
完整代码
import pandas as pd # 原始DataFrame dfx = pd.DataFrame({ 'name': ['alex','bob','jack'], 'age': ["0,26,4","1,25,4","5,30,2"], 'job': ["x,abc,0","y,xyz,1","z,pqr,2"], 'gender': ["0,1","0,1","0,1"] }) # 配置需要拆分的列,新增拆分列只需修改此列表即可 cols_to_split = ['age', 'job', 'gender'] split_result = [] for col in cols_to_split: # 按逗号拆分列,自动适配拆分后的字段数量 tmp = dfx[col].str.split(',', expand=True) # 自动生成新列名:原列名+序号 tmp.columns = [f"{col}{i+1}" for i in tmp.columns] split_result.append(tmp) # 合并原表与所有拆分后的列 df_final = pd.concat([dfx] + split_result, axis=1) # 可选:调整列顺序,使原列与对应拆分列相邻,匹配需求输出格式 col_order = ['name'] for col in cols_to_split: col_order.append(col) col_order.extend([c for c in df_final.columns if c.startswith(col) and c != col]) df_final = df_final[col_order] # 输出结果 print(df_final)
关键特性
- 适配任意数量的待拆分列,仅需修改
cols_to_split列表 - 自动适配每列拆分后的字段数量,无需硬编码下标,例如
gender拆分为2列、age拆分为3列可自动处理 - 列顺序可灵活调整,匹配预期输出格式
运行后输出结果与你提供的期望格式完全一致。
内容的提问来源于stack exchange,提问作者Peshal1067
相关产品推荐
相关产品推荐

