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

如何将MultiIndex DataFrame转换为普通索引DataFrame?

问题:将Pandas多级索引DataFrame转换为普通索引格式

我执行了以下Pandas代码:

import pandas as pd
df1 = pd.DataFrame({'old_code': ['00000001', '00000002', '00000003', '00000004'],
'Desc': ['99999991', '99999992 or 99999922', 'Use 99999993 or 99999933', '99999994']},
)
df1.set_index('old_code', inplace=True)
df2=df1["Desc"].str.extractall(r"(?P<new_code>\d{7,9})")
print(df2.head(10))

当前输出(带多级索引):

old_code match  new_code        
00000001 0      99999991
00000002 0      99999992
         1      99999922
00000003 0      99999993
         1      99999933
00000004 0      99999994

我希望转换为如下普通索引格式的DataFrame:

old_code   new_code        
00000001   99999991
00000002   99999992
00000002   99999922
00000003   99999993
00000003   99999933
00000004   99999994

解决方案

str.extractall()返回的是包含old_code和match的多级索引DataFrame,只需移除match层级并将old_code转为普通列即可,以下是两种简单实现方法:

方法1:重置索引后删除多余列

# 将所有索引转为列,再删除不需要的match列
df_result = df2.reset_index().drop(columns='match')
print(df_result)

方法2:先移除指定索引层级再重置索引

# 移除多级索引中的match层级,再将old_code转为列
df_result = df2.droplevel('match').reset_index()
print(df_result)

两种方法均可得到你期望的普通索引格式结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:36:25