繁体   English   中英

多标签按标签访问Dataframe

[英]Multi index Dataframe access by labels

我已经开始使用Pandas了,我在选择具有多维索引的矩阵行时遇到了很多麻烦。

我有以下Dataframe名为imploc:

In [197]: imploc
Out[197]:
                                   TotProd        TotDem       ProdCost          Price  MinRes        MaxRes     Adjust
Sector      Zone                                                                                                       
 1 BasicEmp  1 Downtown        5000.000000      0.000000   13272.885111   13272.885111     0.0  8.999999e+09   0.000000
             2 Harlem Distri    800.000000      0.000000   11664.924939   11664.924939     0.0  8.999999e+09   0.000000
             3 Beverly Garde   1100.000000      0.000000   11774.847614   11774.847614     0.0  8.999999e+09   0.000000
 2 ServEmp   1 Downtown        3499.999329    711.295166   12872.998776   12872.998776     0.0  8.999999e+09 -50.116985
             2 Harlem Distri    699.999855   2024.319580   11448.578071   11448.578071     0.0  8.999999e+09 -47.460030
             3 Beverly Garde    899.999870   2364.384277   11308.782766   11308.782766     0.0  8.999999e+09 -45.067730
 3 LowInc    1 Downtown        4000.000107  15627.176758    2575.848432    2575.848432     0.0  8.999999e+09 -47.760773
             2 Harlem Distri  12999.999146   2725.641602    2302.787325    2302.787325     0.0  8.999999e+09 -62.273769
             3 Beverly Garde   4999.998932   3647.179932    2501.744127    2501.744127     0.0  8.999999e+09 -62.095543
 4 HighInc   1 Downtown        1500.000504  11310.782227    3697.571092    3697.571092     0.0  8.999999e+09 -44.726818
             2 Harlem Distri   3000.000977   2012.531128    3156.683334    3156.683334     0.0  8.999999e+09 -61.458027
             3 Beverly Garde  11500.003662   2676.691895    3512.280696    3512.280696     0.0  8.999999e+09 -57.550457
 5 Land      1 Downtown          65.999985     65.999985  250000.000000  250000.000000    66.0  6.600000e+01  -8.102549
             2 Harlem Distri    109.999794    109.999794  120000.000000  120000.000000   110.0  1.100000e+02 -23.183863
             3 Beverly Garde    127.999893    127.999893  180000.000000  180000.000000   128.0  1.280000e+02 -22.268484

当我们查看索引时,我们有以下内容:

In [198]:imploc.index
Out[198]: 
MultiIndex(levels=[[u' 1 BasicEmp', u' 2 ServEmp', u' 3 LowInc', u' 4 HighInc', u' 5 Land'], [u' 1 Downtown', u' 2 Harlem Distri', u' 3 Beverly Garde']],
           labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]],
           names=[u'Sector', u'Zone'])

然后,我有一个2级多指标,我很乐意访问,我的意思是:外部索引[u' 1 BasicEmp', u' 2 ServEmp', u' 3 LowInc', u' 4 HighInc', u' 5 Land']应相当于[0,1,2,3,4] ,内部指数['u' 1 Downtown', u' 2 Harlem Distri', u' 3 Beverly Garde'应相当于[0,1,2]

我的问题是,有没有办法恢复行'['3 LowInc','2 Harlem Distri']'但使用编号索引,就像numpy那样。 .ix方法的索引从0到14,而不是二维索引。

我很想做:

>>imploc[2,1]
>>12999.999146   2725.641602    2302.787325    2302.787325     0.0  8.999999e+09 -62.273769

代替:

In [199]:imploc.ix[7]
Out[199]: 
TotProd     1.300000e+04
TotDem      2.725642e+03
ProdCost    2.302787e+03
Price       2.302787e+03
MinRes      0.000000e+00
MaxRes      8.999999e+09
Adjust     -6.227377e+01
Name: ( 3 LowInc,  2 Harlem Distri), dtype: float6

您可以访问像imploc[(' 3 LowInc', ' 2 Harlem Distri')]这样的多索引行imploc[(' 3 LowInc', ' 2 Harlem Distri')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM