pandas层次化索引

import pandas as pd
import numpy as np
from numpy import nan as NA
df=pd.DataFrame(np.random.randn(7,3),index=['a','b','c','d','e','f','g'],columns=['q','w','t'])
In [106]:df
Out[120]: 
          q         w         t
a  0.351629 -1.586787  0.557937
b -0.579714  0.497142 -1.949643
c  0.444369 -0.924846  1.210504
d -0.695731  0.399221 -1.152604
e -0.723842  0.523469 -0.443298
f  0.689071  0.388882 -0.268371
g  0.311272  0.637418 -0.935549
df.loc['a':'e','w']=NA
df.loc['a':'c','t']=NA
In [106]: df
Out[123]: 
          q         w         t
a  0.351629       NaN       NaN
b -0.579714       NaN       NaN
c  0.444369       NaN       NaN
d -0.695731       NaN -1.152604
e -0.723842       NaN -0.443298
f  0.689071  0.388882 -0.268371
g  0.311272  0.637418 -0.935549
In [106]: df.fillna(method='bfill',limit=3)
Out[124]: 
          q         w         t
a  0.351629       NaN -1.152604
b -0.579714       NaN -1.152604
c  0.444369  0.388882 -1.152604
d -0.695731  0.388882 -1.152604
e -0.723842  0.388882 -0.443298
f  0.689071  0.388882 -0.268371
g  0.311272  0.637418 -0.935549
frame=pd.DataFrame(np.arange(12).reshape((4,3)),index=[['a','a','b','b'],[1,2,1,2]],columns=[['oo','oo','cc'],['gg','rr','gg']])
In [106]: frame#分层索引
Out[106]: 
    oo      cc
    gg  rr  gg
a 1  0   1   2
  2  3   4   5
b 1  6   7   8
  2  9  10  11
frame.index.names=['key1','key2']
frame.columns.names=['state','color'] 
In [108]: frame#名字
Out[108]: 
state     oo      cc
color     gg  rr  gg
key1 key2           
a    1     0   1   2
     2     3   4   5
b    1     6   7   8
     2     9  10  11 
In [108]: frame['oo']#列索引
Out[109]: 
color      gg  rr
key1 key2        
a    1      0   1
     2      3   4
b    1      6   7
     2      9  10 
In [108]: frame.swaplevel('key1','key2')#接受两个级别编号或名称,返回一个互换级别的新对象
Out[110]: 
state     oo      cc
color     gg  rr  gg
key2 key1           
1    a     0   1   2
2    a     3   4   5
1    b     6   7   8
2    b     9  10  11 
In [108]: frame.sort_index(1)#根据单个级别中的值对数据进行排序
Out[111]: 
state      cc oo    
color      gg gg  rr
key1 key2           
a    1      2  0   1
     2      5  3   4
b    1      8  6   7
     2     11  9  10 
In [108]: frame.swaplevel(0,1).sort_index(0)
Out[112]: 
state     oo      cc
color     gg  rr  gg
key2 key1           
1    a     0   1   2
     b     6   7   8
2    a     3   4   5
     b     9  10  11
In [108]: frame.sum(level='key2')#指定在某条轴上求和的级别
Out[114]: 
state  oo      cc
color  gg  rr  gg
key2             
1       6   8  10
2      12  14  16     
In [108]: frame.sum(level='color',axis=1)
Out[117]: 
color      gg  rr
key1 key2        
a    1      2   1
     2      8   4
b    1     14   7
     2     20  10 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值