你可以使用下面的基本语法在pandas中平铺一个MultiIndex。
#flatten all levels of MultiIndex
df.reset_index(inplace=True)
#flatten specific levels of MultiIndex
df.reset_index(inplace=True, level = ['level_name'])
下面的例子展示了如何在实践中使用这种语法。
例1:扁平化pandas中的所有级别的MultiIndex
假设我们有如下的MultiIndex pandas DataFrame:
import pandas as pd
#create DataFrame
index_names = pd.MultiIndex.from_tuples([('Level1','Lev1', 'L1'),
('Level2','Lev2', 'L2'),
('Level3','Lev3', 'L3'),
('Level4','Lev4', 'L4')],
names=['Full','Partial', 'ID'])
data = {'Store': ['A','B','C','D'],
'Sales': [12, 44, 29, 35]}
df = pd.DataFrame(data, columns = ['Store','Sales'], index=index_names)
#view DataFrame
df
Store Sales
Full Partial ID
Level1 Lev1 L1 A 17
Level2 Lev2 L2 B 22
Level3 Lev3 L3 C 29
Level4 Lev4 L4 D 35
我们可以使用下面的语法将MultiIndex的每一层都平铺到DataFrame的列中:
#flatten every level of MultiIndex
df.reset_index(inplace=True)
#view updated DataFrame
df
Full Partial ID Store Sales
0 Level1 Lev1 L1 A 12
1 Level2 Lev2 L2 B 44
2 Level3 Lev3 L3 C 29
3 Level4 Lev4 L4 D 35
注意,MultiIndex的每一级现在都是DataFrame中的一列。
例2:在Pandas中扁平化MultiIndex的特定层级
假设我们有和前面例子一样的pandas DataFrame:
#view DataFrame
df
Store Sales
Full Partial ID
Level1 Lev1 L1 A 12
Level2 Lev2 L2 B 44
Level3 Lev3 L3 C 29
Level4 Lev4 L4 D 35
下面的代码显示了如何平铺MultiIndex的一个特定层次:
#flatten 'ID' level only
df.reset_index(inplace=True, level = ['ID'])
#view updated DataFrame
df
ID Store Sales
Full Partial
Level1 Lev1 L1 A 12
Level2 Lev2 L2 B 44
Level3 Lev3 L3 C 29
Level4 Lev4 L4 D 35
下面的代码显示了如何平坦MultiIndex的几个特定层次:
#flatten 'ID' level only
df.reset_index(inplace=True, level = ['Partial', 'ID'])
#view updated DataFrame
df
Partial ID Store Sales
Full
Level1 Lev1 L1 A 12
Level2 Lev2 L2 B 44
Level3 Lev3 L3 C 29
Level4 Lev4 L4 D 35
其他资源
下面的教程解释了如何在pandas中执行其他常用功能: