📜  将多索引转换为列# - Python (1)

📅  最后修改于: 2023-12-03 15:25:17.502000             🧑  作者: Mango

将多索引转换为列 - Python

在进行数据处理时,经常会遇到需要将多个索引转换为列的情况。这时候,我们可以使用 pandas 库中的 reset_index 方法来实现。

reset_index() 方法

reset_index 方法可以将 DataFrame 或 Series 的多级行索引转换为列,并重置行索引值。示例代码如下:

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'Year': [2015, 2016, 2015, 2016, 2016],
        'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
        'Sales': [200, 150, 300, 250, 175]}

df = pd.DataFrame(data)
print(df)

# Output
#        Name  Year Month  Sales
# 0     Alice  2015   Jan    200
# 1       Bob  2016   Feb    150
# 2   Charlie  2015   Mar    300
# 3     David  2016   Apr    250
# 4       Eva  2016   May    175

multi_index = df.set_index(['Year', 'Month'])
print(multi_index)

# Output
#             Name  Sales
# Year Month            
# 2015 Jan    Alice    200
# 2016 Feb      Bob    150
# 2015 Mar  Charlie    300
# 2016 Apr    David    250
# 2016 May      Eva    175

reset_index = multi_index.reset_index()
print(reset_index)

# Output
#    Year Month     Name  Sales
# 0  2015   Jan    Alice    200
# 1  2016   Feb      Bob    150
# 2  2015   Mar  Charlie    300
# 3  2016   Apr    David    250
# 4  2016   May      Eva    175
参数说明

reset_index 方法还有一些常用参数,如下:

  • drop: 是否把原来的索引列丢掉,默认为 True
  • level: 可以指定需要转换为列的索引级别,也可以使用索引标签。
  • col_fill: 当转换后的列名为 MultiIndex 时,可以指定用来填充列名的字符串。
总结

reset_index 方法是将多索引转为列的一种简单有效的方法。除此之外,pandas 还提供了其他一些方法,如 stackunstack,可以用来处理多级行列索引。