Pandas多级索引DataFrame执行drop删'1'列报KeyError该如何解决
多级列索引DataFrame删除指定层级列的解决方案
报错原因
直接向drop方法传入单层索引值时,pandas默认会匹配完整的多级列标签,不会单独匹配某一层的索引值,因此触发KeyError。
正确实现方式
方法1:通过drop方法的level参数指定匹配层级
pandas的drop方法支持level参数,可指定仅在对应层级匹配目标值。多级索引从最外层开始计数,第一层对应level=0,代码如下:
# 如果第一层索引值为字符串'1'用这个 g.drop('1', axis='columns', level=0, inplace=True) # 如果第一层索引值为整数1则去掉引号,用这个 # g.drop(1, axis='columns', level=0, inplace=True)
方法2:手动筛选指定层级的列
如果需要更灵活的筛选逻辑,可先通过get_level_values取出对应层级的所有索引值做判断,再通过切片保留需要的列:
g = g.loc[:, g.columns.get_level_values(0) != '1']
内容的提问来源于stack exchange,提问作者fatcriminal
相关产品推荐
相关产品推荐

