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

如何将Python DataFrame一列拆分为两列并保留原列名下层级

如何将DataFrame的一列拆分为层级化子列

假设你有一个包含单列的DataFrame,想要把这一列拆分成两个子列,并且让这两个子列隶属于原列名之下,形成多级索引(层级化)的列结构,下面是具体实现方法:

示例场景

原DataFrame如下:

import pandas as pd

df = pd.DataFrame({'Info': ['a-1', 'b-2', 'c-3', 'd-4']})

输出:

Info
0  a-1
1  b-2
2  c-3
3  d-4

实现步骤

  1. 拆分目标列,生成临时DataFrame
    用str.split()配合expand=True将单列拆分为多列:
split_df = df['Info'].str.split('-', expand=True)
  1. 创建层级化列名
    通过pd.MultiIndex.from_tuples构建多级列索引,将原列名作为上层,子列名作为下层:
split_df.columns = pd.MultiIndex.from_tuples([('Info', 'Part1'), ('Info', 'Part2')])
  1. 替换原DataFrame(或合并回原表)
    如果原表只有这一列,直接替换即可:
df = split_df

最终输出的层级化DataFrame:

Info     
      Part1 Part2
0        a      1
1        b      2
2        c      3
3        d      4

保留其他列的情况

如果原DataFrame还有其他列需要保留,不要直接替换,而是用join合并:

# 带其他列的原DataFrame
df = pd.DataFrame({'Info': ['a-1', 'b-2', 'c-3', 'd-4'], 'Other': ['x', 'y', 'z', 'w']})

split_df = df['Info'].str.split('-', expand=True)
split_df.columns = pd.MultiIndex.from_tuples([('Info', 'Part1'), ('Info', 'Part2')])

# 删除原单列,合并拆分后的层级列
df = df.drop('Info', axis=1).join(split_df)

输出结果:

Other     Info     
              Part1 Part2
0     x        a      1
1     y        b      2
2     z        c      3
3     w        d      4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:57:20