Pandas excel 双标题 多级索引 层次化索引 MultiIndex

1 import pandas as pd
2 import numpy as np

多级索引

多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame对象上拥有2个以及2个以上的索引。 
实质上,单级索引对应Index对象,多级索引对应MultiIndex对象。

一、Series对象的多级索引

 

  • 多级索引Series对象的创建
se1=pd.Series(np.random.randn(4),index=[list("aabb"),[1,2,1,2]])
se1

代码结果:

a  1    0.945676
   2    1.240454
b  1    1.021960
   2    0.363063
dtype: float64
  • 子集的选取
se1['a']

代码结果:

1    0.945676
2    1.240454
dtype: float64

  

se1['a':'b']

代码结果:

  

a  1    0.945676
   2    1.240454
b  1    1.021960
   2    0.363063
dtype: float64

甚至能内层选取

se1[:,1]

代码结果:

a    0.945676
b    1.021960
dtype: float64

二、DataFrame对象的多级索引

  • 创建

 

df1=pd.DataFrame(np.arange(12).reshape(4,3),index=[list("AABB"),[1,2,1,2]],columns=[list("XXY"),[10,11,10]])
df1

  

代码结果:

  Y
  10 1110
A1012
2345
B1678
291011


 
 

 

 

 

 

 

每一层都可以赋名

df1.columns.names=['XY','sum']
df1.index.names=['AB','num']
df1

代码结果:

 XYY
 sum 101110
ABnum    
A1012
2345
B1678
291011


 
 

 

 

 

 

· 可以创建MultiIndex对象再作为索引

df1.index=pd.MultiIndex.from_arrays([list("AABB"),[3,4,3,4]],names=["AB","num"])
df1

 

代码结果:

 XYY
 sum 101110
ABnum    
A3012
4345
B3678
491011

 


 
 

 

 

 

可以对各级索引进行互换

df1.swaplevel('AB','num')

 

代码结果:

 XYY
 sum 101110
num AB   
3A012
4A345
3B678
4B91011


 
 

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataFrame的层次化索引是指在DataFrame中的行或列上使用多个索引级别来表示数据的一种结构。这种索引结构可以让我们在一个轴上拥有多个索引级别。 在构建DataFrame的层次化索引时,可以通过多种方法实现。一种方法是在导入数据时直接使用列名作为行索引,使用`index_col`参数来指定多个列作为索引。另一种方法是使用`set_index()`方法将某几列设置为索引。设置索引后,可以选择是否保留原始列作为DataFrame的一部分。而要将层次化索引转换为二维表格形式,可以使用`reset_index()`函数。 除了以上方法,还可以在创建DataFrame时直接指定多级索引,可以通过使用一个由列表或数组组成的列表作为索引来实现。例如,可以使用`pd.DataFrame()`函数的`index`参数来指定多级索引的值。 综上所述,DataFrame的层次化索引可以通过在导入数据时设置索引列,使用`set_index()`方法或在创建DataFrame时直接指定多级索引来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python学习笔记8——Series与DataFrame中的层次化索引](https://blog.csdn.net/weixin_44181744/article/details/105977700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [pandas 层次化索引的实现方法](https://download.csdn.net/download/weixin_38679651/14914102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值