【发布时间】:2014-10-03 04:13:07
【问题描述】:
我有下表:
注意:NSRCODE 和 PBL_AWI 都是索引的
注意:面积百分比列将被填写,只是尚未填写。
NSRCODE PBL_AWI Area % Of 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
如何过滤掉“PBL_AWI”索引中的项目? 例如我想保留 ['Lake', 'River', 'Upland']
【问题讨论】:
-
如果你的表名是 df,那么 df[df['PBL_AWI'] in ['Lake', 'River', 'Upland']] 或者 df[df['PBL_AWI'] = = 'Lake' 或 df['PBL_AWI'] == ''River 或 df['PBL_AWI'] == 'Upland'] 应该可以解决问题。过滤是非常基本的东西,你应该看到pandas.pydata.org/pandas-docs/stable/tutorials.html
-
@Inox 我意识到过滤是我之前在单索引数据帧上做过的非常基本的事情。但是,在尝试上面的内容时,多索引数据框会产生“KeyError: u'no item named PBL_AWI'”
-
虽然@CTZhu 有正确的答案,但请注意,您可以使用@Inox 之类的解决方案,只需先执行
df = df.reset_index()。如果找不到更好的解决方案,我经常使用 MultiIndex 来解决这个问题。但我发现通常有更好的解决方案,只是不太容易被发现。 -
如果您有兴趣了解更多关于切片和过滤多索引数据帧的信息,请查看我的帖子:How do I slice or filter MultiIndex DataFrame levels?。谢谢!
标签: python filter pandas indexing