DataFrame.droplevel(self, level, axis=0)
返回删除指定的索引/列级别的DataFrame。
参数: | level : int,str或list-like 如果给出了字符串,则必须是级别的名称。如果类似列表,则元素必须是级别的名称或位置索引。 axis : {0或'index',1或'columns'},默认为0 |
返回: |
|
例子
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)