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

如何在Python DataFrame中拆分文本与数字列?

Python DataFrame复合列名拆分实现方案

针对原始DataFrame中列名为一级-二级-三级这类带分隔符的复合层级结构,要拆分为多列层级+对应数据值的目标格式,可通过以下两种pandas方案实现:

方法一:长格式转换+列拆分

  1. 将宽格式数据转为长格式,把复合列名转为单独列:
import pandas as pd

# 模拟原始数据(替换为你的实际DataFrame)
df = pd.DataFrame({
    "A-B-C": [10],
    "A-B-D": [20],
    "X-Y-Z": [30]
})

# 转长格式,列名存入category列,数据存入value列
melted_df = df.melt(var_name="category", value_name="value")
  1. 拆分复合列名为多个层级列:
# 按短横线拆分category列,扩展为多列
melted_df[["Level1", "Level2", "Level3"]] = melted_df["category"].str.split("-", expand=True)

# 移除冗余的category列,得到最终结果
final_df = melted_df.drop("category", axis=1)

方法二:多级列索引+展开

通过将列名转为多级索引,再展开为行结构:

# 把复合列名拆分为三级索引
df.columns = df.columns.str.split("-", expand=True)

# 展开多级索引为行,并重命名列
final_df = df.stack([0, 1, 2]).reset_index()
final_df.columns = ["Level1", "Level2", "Level3", "value"]

两种方法最终得到的final_df都会匹配你需要的目标格式:每个层级作为独立列,对应的数据值一一对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:45:35