python/pandas dataframe中multiindex的操作

本文探讨了如何在Python的Pandas DataFrame中创建和操作多重索引(MultiIndex)。通过使用`xs`函数,我们可以方便地选取特定级别的数据,尽管它不支持在同一级上选择多个索引。此外,为了更灵活地设置和获取值,文章介绍了`MultiIndex Slicers`和`PD.IndexSlice`,这两个工具提供了更强大的功能,并且在使用`loc`时能直接修改原数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何建立多重索引

import pandas as PD

df = PD.DataFrame()
df['a'] = list(range(10,30,2))
df['b'] = df['a'] // 10
df.index.name = 'id'
#drop : boolean, default True Delete columns to be used as the new index
df = df.set_index([df['b'], df.index],  drop=False)

至此建立了一个带二重索引的dataframe
df_output

对带多重索引的dataframe取值一般使用xs
xs可以传入多个不同级别的索引进行筛选,但不支持同一级索引多选
并且xs返回的是数值而不是引用

xs is only for getting, not setting values. MultiIndex Slicers is a
generic way to get/set values on any level or levels it is a superset
of xs functionality, see MultiIndex Slicers

df.xs(1, level='b')

这里写图片描述

#选取第一级b=2,id=6
df.xs((2,6))

这里写图片描述

使用PD.IndexSlice可以更花式的作死
这里因为使用的是loc,所以返回的是引用,可以修改原值
IndexSlice中,每一级的index都要有对应的取值,全取则用”:”

#idx['b','id']
idx = PD.IndexSlice
df.loc[idx[:,[1,3,8]],'a']

idx_output

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值