Pandalarla çalışmaya başladım ve çok boyutlu dizinlere sahip matris dizileri seçiminde çok fazla sorun yaşıyorum.Çoklu dizin Etiketlere göre veri aralığı erişimi
aşağıdaki Dataframe imploc çağrıda:
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
biz endeksi baktığımızda şu var: O
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'])
, ben 2 seviyeleri çok isterim o multiindex var erişim sahibi olmak demek istediğim: [u' 1 BasicEmp', u' 2 ServEmp', u' 3 LowInc', u' 4 HighInc', u' 5 Land']
dış indeksi [0,1,2,3,4]
'a eşdeğer olmalıdır ve iç dizin ['u' 1 Downtown', u' 2 Harlem Distri', u' 3 Beverly Garde'
[0,1,2]
'a eşdeğer olmalıdır.
Sorum şu ki, '[' 3 LowInc ',' 2 Harlem Distri ']' satırını kurtarmanın, ancak numpy'nin yaptığı gibi numaralandırılmış indeksleri kullanmanın bir yolu var. .ix yöntemi, iki boyutlu dizine yerine 0'dan 14'e endekslenir.
Yapmam isteriz:
>>imploc[2,1]
>>12999.999146 2725.641602 2302.787325 2302.787325 0.0 8.999999e+09 -62.273769
yerine:
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
Evet gibi bir çok indeks satırı erişebilir, bu, yapmak istediğim şeydir ancak tamsayılarla. Tek cevabın tamsayıların indekslerini değiştirdiğini düşünüyorum. – tcapelle