如何将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
实现步骤
- 拆分目标列,生成临时DataFrame
用str.split()配合expand=True将单列拆分为多列:
split_df = df['Info'].str.split('-', expand=True)
- 创建层级化列名
通过pd.MultiIndex.from_tuples构建多级列索引,将原列名作为上层,子列名作为下层:
split_df.columns = pd.MultiIndex.from_tuples([('Info', 'Part1'), ('Info', 'Part2')])
- 替换原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
相关产品推荐
相关产品推荐

