简体   繁体   English

熊猫:MultiIndex上的复杂查询

[英]Pandas: Complex query on MultiIndex

I have the following DataFrame 我有以下DataFrame

data = DataFrame({'k1':['one'] * 3 + ['two'] *4,
              'k2':[1, 1, 2, 3, 3, 4, 4],
              'date': [
                DT.datetime(2013,1,1,14,0),
                DT.datetime(2013,1,1,14,5),
                DT.datetime(2013,1,2,15,0),
                DT.datetime(2013,1,2,10,0),
                DT.datetime(2013,1,3,19,0),                                      
                DT.datetime(2013,1,3,18,0),
                DT.datetime(2013,1,4,16,0)]
                  })
data.set_index(['date','k1', 'k2'], inplace=True)

Does anyone know how I can query this MultiIndex to retrieve all entries which are before 2013-01-02 and have k1 = 'one' and k2 = 1? 有谁知道我如何查询此MultiIndex以检索2013年1月2日之前的所有条目,并且k1 ='one'和k2 = 1?

Any help is appreciated 任何帮助表示赞赏

Thanks 谢谢

You can use data.index.get_level_values() to filter multiIndex 您可以使用data.index.get_level_values()过滤multiIndex

>> data.iloc[data.index.get_level_values('k1') == 'one']

to filter the index based on k1 alone. 仅根据k1过滤索引。 To filter based on k1 and k2 use can use 要基于k1k2过滤,可以使用

>> data.iloc[(data.index.get_level_values('k1') == 'one') & (data.index.get_level_values('k2') == 1)]

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

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