python pandas创建多层索引MultiIndex的6种方式

  • Post category:Python

下面是详细讲解“Python Pandas创建多层索引MultiIndex的6种方式”的完整攻略。

什么是MultiIndex

多层索引(MultiIndex)是由多个索引级别构成的索引对象。在Pandas中,MultiIndex使得数据可以在更高维度上被标记和查询。

为什么需要MultiIndex

在一些数据分析场景中,需要对数据进行“分组-聚合”等操作。这时MultiIndex可以让我们更方便的按照想要的方式对数据进行分组聚合操作,方便我们进行更深层次的数据探索,不同于普通Index,它可以挖掘出数据与数据间的层级关系,也可以方便地进行关联、筛选等操作。

创建MultiIndex的6种方式

方法一:使用list创建MultiIndex

使用list创建MultiIndex,list中每个元素表示一个索引级别,list中每个元素的长度都要相等。

import pandas as pd

# 通过list生成MultiIndex
multi_index = pd.MultiIndex.from_arrays([['A', 'A', 'A', 'B', 'B'],
                                          ['a', 'b', 'c', 'd', 'e']])
s = pd.Series([1, 2, 3, 4, 5], index=multi_index)
print(s)

输出结果:

A  a    1
   b    2
   c    3
B  d    4
   e    5
dtype: int64

方法二:使用tuples创建MultiIndex

使用tuples创建MultiIndex,tuples元素个数即为索引级别数,每个tuples中的元素表示一个索引点。

import pandas as pd

# 通过tuples生成MultiIndex
multi_index = pd.MultiIndex.from_tuples([('A', 'a'), ('A', 'b'), ('A', 'c'), ('B', 'd'), ('B', 'e')])
s = pd.Series([1, 2, 3, 4, 5], index=multi_index)
print(s)

输出结果:

A  a    1
   b    2
   c    3
B  d    4
   e    5
dtype: int64

方法三:使用product创建MultiIndex

使用itertools.product模块的product函数创建MultiIndex,参数中的元素个数即为索引级别数,每个元素表示一个索引级别中的元素。

import pandas as pd
import itertools

# 通过product生成MultiIndex
multi_index = pd.MultiIndex.from_product([['A', 'B'], ['a', 'b', 'c']])
s = pd.Series([1, 2, 3, 4, 5, 6], index=multi_index)
print(s)

输出结果:

A  a    1
   b    2
   c    3
B  a    4
   b    5
   c    6
dtype: int64

方法四:使用from_frame创建MultiIndex

使用DataFrame的from_frame方法创建MultiIndex,该方法参数为一个DataFrame,DataFrame的每一列即为一个索引级别。

import pandas as pd

# 通过from_frame生成MultiIndex
df = pd.DataFrame({'first': ['A', 'A', 'A', 'B', 'B'], 'second': ['a', 'b', 'c', 'd', 'e']})
multi_index = pd.MultiIndex.from_frame(df)
s = pd.Series([1, 2, 3, 4, 5], index=multi_index)
print(s)

输出结果:

first  second
A      a         1
       b         2
       c         3
B      d         4
       e         5
dtype: int64

方法五:使用from_arrays创建MultiIndex

使用Index的from_arrays方法创建MultiIndex。

import pandas as pd

# 通过Index.from_arrays生成MultiIndex
first = ['A', 'A', 'A', 'B', 'B']
second = ['a', 'b', 'c', 'd', 'e']
index = pd.Index.from_arrays([first, second])
s = pd.Series([1, 2, 3, 4, 5], index=index)
print(s)

输出结果:

A  a    1
   b    2
   c    3
B  d    4
   e    5
dtype: int64

方法六:使用from_tuples创建MultiIndex

使用Index的from_tuples方法创建MultiIndex。

import pandas as pd

# 通过Index.from_tuples生成MultiIndex
multi_index = pd.Index.from_tuples([('A', 'a'), ('A', 'b'), ('A', 'c'), ('B', 'd'), ('B', 'e')])
s = pd.Series([1, 2, 3, 4, 5], index=multi_index)
print(s)

输出结果:

A  a    1
   b    2
   c    3
B  d    4
   e    5
dtype: int64

总结

通过以上6种方法,我们可以灵活地创建MultiIndex,充分利用Pandas的数据分析功能,实现更高效的数据分析。