pandas多重索引

import pandas as pd
import numpy as np
from pandas import Series,DataFrame

Series的多重索引

letters = list('ABC')
numbers = list(range(5))
mi = pd.MultiIndex.from_product([letters,numbers])
s1 = Series(np.random.rand(15),index = mi)
print(s1)

A  0    0.929111
   1    0.922470
   2    0.308488
   3    0.121715
   4    0.653796
B  0    0.750678
   1    0.927841
   2    0.906116
   3    0.009765
   4    0.243549
C  0    0.745671
   1    0.407037
   2    0.303508
   3    0.977439
   4    0.011076
dtype: float64

多重索引查询

s1.loc[:,[0,3,4]]
Out[35]: 
A  0    0.558897
   3    0.082423
   4    0.627376
B  0    0.123782
   3    0.635579
   4    0.056387
C  0    0.028698
   3    0.189675
   4    0.158884
dtype: float64

切片

s1.loc[pd.IndexSlice[:'B',:2]]
Out[42]: 
A  0    0.558897
   1    0.262638
   2    0.023349
B  0    0.123782
   1    0.698727
   2    0.182843
dtype: float64

DataFrame 多重索引

df1 = DataFrame(np.arange(12).reshape(4,3),
                index=[list('AABB'),list('1212')],
                columns = list('abc'))
 df1
Out[58]: 
     a   b   c
A 1  0   1   2
  2  3   4   5
B 1  6   7   8
  2  9  10  11               

给索引命名

df1.index.names = ['F','S']

df1
Out[72]: 
     a   b   c
F S           
A 1  0   1   2
  2  3   4   5
B 1  6   7   8
  2  9  10  11
  

按索引求和

df1.groupby('F').sum()
Out[66]: 
    a   b   c
F            
A   3   5   7
B  15  17  19

行列名称转换

df1.stack()
Out[68]: 
F  S   
A  1  a     0
      b     1
      c     2
   2  a     3
      b     4
      c     5
B  1  a     6
      b     7
      c     8
   2  a     9
      b    10
      c    11
dtype: int32

索引转换

df1.unstack()
Out[70]: 
   a     b      c    
S  1  2  1   2  1   2
F                    
A  0  3  1   4  2   5
B  6  9  7  10  8  11
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值