Pandas将行与行进行比较,具有相似的部分多索引

时间:2018-05-08 12:11:02

标签: python pandas

问题描述

我有一个多索引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'])]

在此代码中遗漏

将值与固定索引行进行比较,而不是根据其自身索引的一部分选择参考行

0 个答案:

没有答案