如何在Python DataFrame中拆分文本与数字列?
Python DataFrame复合列名拆分实现方案
针对原始DataFrame中列名为一级-二级-三级这类带分隔符的复合层级结构,要拆分为多列层级+对应数据值的目标格式,可通过以下两种pandas方案实现:
方法一:长格式转换+列拆分
- 将宽格式数据转为长格式,把复合列名转为单独列:
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")
- 拆分复合列名为多个层级列:
# 按短横线拆分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
相关产品推荐
相关产品推荐

