Панды сравнивают строки в строку с похожим частичным многоиндексным - PullRequest
0 голосов
/ 08 мая 2018

Описание проблемы

У меня есть мульти-индексный фрейм данных pandas со столбцом 'value' как один из столбцов:

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

Я хочу выбрать все строки r с индексом (index0, index1), где выполняется следующее:

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'])]

Отсутствует в этом коде

Значения сравниваются с фиксированной индексной строкой вместо выбора ссылочной строки на основе части ее собственного индекса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...