pandas.DataFrame.droplevel()用于从 多级索引(MultiIndex) 中删除某一层(或多层)。可以应用于行索引(index)或列索引(columns)。对于处理具有层次结构的索引的数据非常有用。DataFrame.droplevel() 是一个有用的方法,特别适用于处理层次化的索引。可以灵活地删除行或列索引的层次结构,使得数据更加易于访问和分析。本文主要介绍一下Pandas中pandas.DataFrame.droplevel方法的使用。

DataFrame.droplevel(self, level, axis=0)

返回删除指定的索引/列级别的DataFrame。

参数

level : int,str或list-like

如果给出了字符串,则必须是级别的名称。如果类似列表,则元素必须是级别的名称或位置索引。

axis : {0或'index',1或'columns'},默认为0

返回

DataFrame.droplevel()

例子

1)删除行索引的某一层

import pandas as pd

# 创建一个带有多级行索引的 DataFrame
index = pd.MultiIndex.from_tuples([('A', 'X'), ('A', 'Y'), ('B', 'X'), ('B', 'Y')], 
                                  names=['Upper', 'Lower'])
df = pd.DataFrame({'Value': [10, 20, 30, 40]}, index=index)

print("原始 DataFrame:")
print(df)

# 删除最外层的索引 'Upper'
result = df.droplevel('Upper')

print("\n删除 'Upper' 索引后的 DataFrame:")
print(result)

2)删除列索引的某一层

# 创建一个带有多级列索引的 DataFrame
columns = pd.MultiIndex.from_tuples([('A', 'X'), ('A', 'Y'), ('B', 'X'), ('B', 'Y')], 
                                    names=['Upper', 'Lower'])
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8]], columns=columns)

print("原始 DataFrame:")
print(df)

# 删除列索引的最外层 'Upper'
result = df.droplevel('Upper', axis=1)

print("\n删除 'Upper' 索引后的 DataFrame:")
print(result)

3)删除多层索引

import pandas as pd

# 创建一个带有多级列索引的 DataFrame
columns = pd.MultiIndex.from_tuples([('A', 'X'), ('A', 'Y'), ('B', 'X'), ('B', 'Y')], 
                                    names=['Upper', 'Lower'])
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8]], columns=columns)

print("原始 DataFrame:")
print(df)

# 删除列索引的最外层 'Upper'
result = df.droplevel('Upper', axis=1)

print("\n删除 'Upper' 索引后的 DataFrame:")
print(result)

3)删除多层索引

import pandas as pd

# 创建一个带有多级列索引的 DataFrame
columns = pd.MultiIndex.from_tuples([('A', 'X' ,'Y'), ('A', 'Y' ,'Z'), ('B', 'X', 'Z'), ('B', 'Y', 'C')], 
                                    names=['Upper', 'Lower', 'cjavapy'])
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8]], columns=columns)

print("原始 DataFrame:")
print(df)

# 删除多个层的列索引
result = df.droplevel(['Upper', 'Lower'], axis=1)

print("\n删除多层索引后的 DataFrame:")
print(result)

4)使用示例

import pandas as pd

# 创建一个多级索引的 DataFrame
df = pd.DataFrame([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]).set_index([0, 1]).rename_axis(['a', 'b'])

# 设置多级列索引
df.columns = pd.MultiIndex.from_tuples([
   ('c', 'e'), ('d', 'f')
], names=['level_1', 'level_2'])

print("原始 DataFrame:")
print(df)

# 删除 'a' 索引层
result_1 = df.droplevel('a')
print("\n删除 'a' 索引后的 DataFrame:")
print(result_1)

# 删除列索引的 'level_2' 层
result_2 = df.droplevel('level_2', axis=1)
print("\n删除列索引的 'level_2' 层后的 DataFrame:")
print(result_2)

推荐文档

相关文档

大家感兴趣的内容

随机列表