I have the following table:
NSRCODE PBL_AWI Area CM BONS 44705.492941 BTNN 253854.591990 FONG 41625.590370 FONS 16814.159680 Lake 57124.819333 River 1603.906642 SONS 583958.444751 STNN 45603.837177 clearcut 106139.013930 disturbed 127719.865675 lowland 118795.578059 upland 2701289.270193 LBH BFNN 289207.169650 BONS 9140084.716743 BTNI 33713.160390 BTNN 19748004.789040 FONG 1687122.469691 FONS 5169959.591270 FTNI 317251.976160 FTNN 6536472.869395 Lake 258046.508310 River 44262.807900 SONS 4379097.677405 burn regen 744773.210860 clearcut 54066.756790 disturbed 597561.471686 lowland 12591619.141842 upland 23843453.638117
Note: Both NSRCODE
and PBL_AWI
are indices.
How do I search for values in column PBL_AWI
? For example I want to keep the values ['Lake', 'River', 'Upland']
.
Advertisement
Answer
You can get_level_values
in conjunction with Boolean slicing.
In [50]: print df[np.in1d(df.index.get_level_values(1), ['Lake', 'River', 'Upland'])] Area NSRCODE PBL_AWI CM Lake 57124.819333 River 1603.906642 LBH Lake 258046.508310 River 44262.807900
The same idea can be expressed in many different ways, such as df[df.index.get_level_values('PBL_AWI').isin(['Lake', 'River', 'Upland'])]
Note that you have 'upland'
in your data instead of 'Upland'