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

如何用Pandas创建带组合列名的DataFrame并拆分单元格数据?

Pandas处理分号分隔单元格并拆分多列完整实现

步骤1:读取Excel文件

首先用pandas.read_excel读取目标文件,生成初始DataFrame:

import pandas as pd

# 读取Excel文件,替换为你的文件路径
df = pd.read_excel("your_target_file.xlsx")

步骤2:基础拆分逻辑(非嵌套字符串)

避免循环遍历单元格(效率低下),直接用Pandas矢量化字符串操作完成拆分,并自动生成规范列名:

# 定义分隔符
separator = ";"

# 遍历每一列进行处理
for col in df.columns:
    # 将单元格转为字符串后拆分,expand=True直接将拆分结果转为多列DataFrame
    split_result = df[col].astype(str).str.split(separator, expand=True)
    # 给拆分后的列命名:原列名_1、原列名_2...
    split_result.columns = [f"{col}_{i+1}" for i in split_result.columns]
    # 将拆分后的列合并回原DataFrame
    df = pd.concat([df, split_result], axis=1)

# 可选:如果不需要保留原列,执行下方代码删除
# df = df.drop(columns=df.columns[:len(df.columns)//2])

步骤3:嵌套格式处理(针对[[[A;B;C], [D;E]]]类内容)

如果单元格是带嵌套括号的字符串,先清洗冗余字符再拆分:

import re

# 清洗嵌套字符串:移除所有括号和空格
def clean_nested_str(s):
    s = str(s)
    # 正则替换掉所有括号和空白字符
    return re.sub(r'[\[\]\s]', '', s)

# 遍历列处理
for col in df.columns:
    # 先清洗单元格内容
    cleaned_series = df[col].apply(clean_nested_str)
    # 拆分并生成新列
    split_result = cleaned_series.str.split(separator, expand=True)
    split_result.columns = [f"{col}_{i+1}" for i in split_result.columns]
    # 合并到原DataFrame
    df = pd.concat([df, split_result], axis=1)

效果示例

假设原DataFrame为:

column_name1column_name2
A;B;CD;E
F;GH;I;J

处理后生成的结果:

column_name1column_name2column_name1_1column_name1_2column_name1_3column_name2_1column_name2_2column_name2_3
A;B;CD;EABCDENaN
F;GH;I;JFGNaNHIJ

空缺位置会自动填充NaN,完全匹配“按顺序填充数据”的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:37:34