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

如何在pandas中通过str.extract为DataFrame创建行列多层索引

解决方案

你可以通过str.extract搭配正则捕获组提取国家、行业两个字段,再转换为pandas多层索引,具体实现如下:

完整实现代码

import pandas as pd

# 示例数据
idx = ['CAN_agr', 'CAN_ser', 'USA_agr', 'USA_ser', 'MEX_agr', 'MEX_ser']
sample = pd.DataFrame(
    [[1, 2, 3, 4, 5 ,6],
     [7, 8, 9, 10, 11, 12],
     [13, 14, 15, 16, 17, 18],
     [19, 20, 21, 22, 23, 24],
     [25, 26, 27, 28, 29, 30],
     [31, 32, 33, 34, 35, 36]],
    index = idx,
    columns=idx
)

# 处理行多层索引
sample.index = pd.MultiIndex.from_frame(
    sample.index.str.extract(r'(?P<国家>\w+)_(?P<行业>\w+)')
)

# 处理列多层索引
sample.columns = pd.MultiIndex.from_frame(
    sample.columns.str.extract(r'(?P<国家>\w+)_(?P<行业>\w+)')
)

# 查看结果
print(sample)

逻辑说明

  • 正则表达式中的两个括号为捕获组,分别匹配下划线前后的字符串,对应国家、行业两个索引层级
  • str.extract会按捕获组的顺序返回两列DataFrame,传入pd.MultiIndex.from_frame即可直接生成多层索引
  • 捕获组的?P<层级名>写法可以直接给多层索引的层级命名,不需要命名可以省略,改为r'(\w+)_(\w+)'即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 11:24:05