【Python笔记】Pandas层次化索引


层次化索引(hierarchical indexing)是pandas的一项重要功能,它使你能在一个轴上拥有多个(两个以上)索引级别。抽象点说,它使你能以低纬度处理高纬度数据。

Series

data=pd.Series(np.random.randn(10),
               index=[list('aaabbbccdd'),list('1231231223')])
# a  1   -0.264274
#    2    0.623079
#    3   -0.382485
# b  1   -0.126583
#    2    0.166526
#    3   -0.029227
# c  1   -0.377238
#    2    1.856859
# d  2   -1.154921
#    3   -0.073246
# dtype: float64

data.index
# MultiIndex([('a', '1'),
#             ('a', '2'),
#             ('a', '3'),
#             ('b', '1'),
#             ('b', '2'),
#             ('b', '3'),
#             ('c', '1'),
#             ('c', '2'),
#             ('d', '2'),
#             ('d', '3')],
#            )

data['b']
#  1   -0.126583
#  2    0.166526
#  3   -0.029227

data['b':'c'] # data.ix[['b','c']]
# b  1   -0.126583
#    2    0.166526
#    3   -0.029227
# c  1   -0.377238
#    2    1.856859

data.ix[['b','d']]
# b  1   -0.126583
#    2    0.166526
#    3   -0.029227
# d  2   -1.154921
#    3   -0.073246
# 数据重塑
data.unstack()
123
a-2.6231620.6258380.071932
b1.0412430.507749-1.062712
c0.5175310.447269NaN
dNaN1.4855030.944937
# 数据重塑逆运算
data.unstack().stack()

# a  1   -2.623162
#    2    0.625838
#    3    0.071932
# b  1    1.041243
#    2    0.507749
#    3   -1.062712
# c  1    0.517531
#    2    0.447269
# d  2    1.485503
#    3    0.944937
# dtype: float64

DataFrame

frame=pd.DataFrame(np.arange(12).reshape(4,3),
                  index=[list('aabb'),list('1212')],
                  columns=[['ohio','ohio','colorado'],
                          ['green','red','green']])

在这里插入图片描述

frame.index.names=['keys1','keys2']
frame.columns.names=['state','color']

在这里插入图片描述

frame['ohio']

在这里插入图片描述

重排分级顺序

有时,我们需要重新调整某条轴上各个级别的顺序,或根据指定级别上的值对数据进行排序。swaplevel接受两个级别编号或名称,并返回一个互换了级别的新对象(但数据不会发生变化)。

frame.swaplevel('keys1','keys2')

在这里插入图片描述

根据级别汇总统计

frame.sum(level='keys2')

在这里插入图片描述

frame.sum(level='color',axis=1)

在这里插入图片描述

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.youkuaiyun.com/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.youkuaiyun.com/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 ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值