问题描述
我有一个多索引pandas数据框,其中包含列'值'如列:
index name value
('cat1', 'subcat1') henk 6
('cat2', 'subcat1') klaas 7
('cat3', 'subcat1') jan 10
('cat1', 'subcat2') piet 7
('cat2', 'subcat2') joris 8
('cat3', 'subcat2') corneel 9
我想选择具有索引(index0,index1)的所有行r,其中包含以下内容:
r['value'] > ref['value']
其中ref与r具有相同的第一个索引,并且' subcat1'作为第二个指标:
r.index0 == ref.index0 AND ref.index1 == 'subcat1'
这将导致:
index name value
('cat1', 'subcat2') piet 7
('cat2', 'subcat2') joris 8
简而言之,我如何根据它自己的多级索引来比较行的值。
目前我已编码
到目前为止,我获得了选择大于参考索引的值的代码,但只有完整的索引
import pandas as pd
indices = [['cat1','cat2','cat3','cat1','cat2','cat3'],['subcat1','subcat1','subcat1','subcat2','subcat2','subcat2']]
df = pd.DataFrame([
{'value' : 6,'name' : 'henk'},
{'value' : 7,'name' : 'klaas'},
{'value' : 10,'name' : 'jan'},
{'value' : 7,'name' : 'piet'},
{'value' : 8,'name' : 'joris'},
{'value' : 9,'name' : 'corneel'},
],index=indices)
result = df[(df['value'] > df.loc[('cat1','subcat1')]['value'])]
在此代码中遗漏
将值与固定索引行进行比较,而不是根据其自身索引的一部分选择参考行