如何用Python Pandas或Tableau拆分Excel中多级结构的单列?
三级结构列拆分(Project/Task/Subtask)解决方案
方法一:Python Pandas 处理
直接通过字符串拆分和逻辑判断拆分三级结构,代码示例如下:
import pandas as pd # 读取目标Excel文件 df = pd.read_excel("your_file.xlsx") # 替换成你的实际文件名和路径 # 按`.`拆分层级列,生成临时拆分列 split_parts = df["层级列名"].str.split(".", expand=True) # 替换成Excel中存储三级结构的列名 # 生成Project列:取第一部分 df["Project"] = split_parts[0] # 生成Task列:仅当存在第二部分时,拼接Project和任务后缀 df["Task"] = split_parts.apply( lambda row: f"{row[0]}.{row[1]}" if row[1] is not None else "", axis=1 ) # 生成Subtask列:仅当存在第三部分时,拼接完整三级结构 df["Subtask"] = split_parts.apply( lambda row: f"{row[0]}.{row[1]}{row[2]}" if row[2] is not None else "", axis=1 ) # 可选:过滤掉仅包含Project的行(如果只需要带Subtask的记录) # df = df[df["Subtask"] != ""] # 保存处理后的文件 df.to_excel("split_result.xlsx", index=False)
逻辑说明
- 拆分后第一部分始终是项目编号(如
AA201) - 第二部分存在时,拼接成完整任务编号(如
AA201.01) - 第三部分存在时,拼接成完整子任务编号(如
AA201.0101) - 无对应层级的列会留空,完全匹配目标格式
方法二:Tableau 直接处理(适合仪表板数据源)
无需导出预处理,直接在Tableau中通过计算字段实现拆分:
步骤1:拆分原始列
- 连接Excel数据源后,找到存储三级结构的列
- 右键该列 → 选择拆分,按默认的
.分隔符拆分,生成层级列名-拆分1、层级列名-拆分2、层级列名-拆分3三个临时列
步骤2:创建计算字段
- Project 计算字段:
[层级列名-拆分1]
- Task 计算字段:
IF NOT ISNULL([层级列名-拆分2]) THEN [层级列名-拆分1] + "." + [层级列名-拆分2] ELSE NULL END
- Subtask 计算字段:
IF NOT ISNULL([层级列名-拆分3]) THEN [层级列名-拆分1] + "." + [层级列名-拆分2] + [层级列名-拆分3] ELSE NULL END
步骤3:整理数据源
- 将生成的三个计算字段拖入数据源面板,即可得到符合要求的三级结构列
- 后续可直接用这些字段构建仪表板
内容的提问来源于stack exchange,提问作者lowkilurker
相关产品推荐
相关产品推荐

