如何将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
相关产品推荐
相关产品推荐

