【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)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值