Итак, учитывая мультииндексированный фрейм данных, я хотел бы возвращать только строки, которые удовлетворяют условию для всех уровней нижнего индекса в мультииндексе. Вот небольшой рабочий пример:
df = pd.DataFrame({'a': [1, 1, 2, 2], 'b': [1, 2, 3, 4], 'c': [0, 2, 2, 2]})
df = df.set_index(['a', 'b'])
print(df)
вне:
c
a b
1 1 0
2 2
2 3 2
4 2
Теперь я хотел бы вернуть записи, для которых c > 1
. Например, я хотел бы сделать что-то вроде
df[df[c > 1]]
вне:
c
a b
1 2 2
2 3 2
4 2
Но я хочу получить
вне:
c
a b
2 3 2
4 2
Любые мысли о том, как сделать это наиболее эффективным способом?
a == 2
. Это просто игрушечный пример. - person pdevar   schedule 20.10.2015df[df[c > 1]]
? - person ako   schedule 21.10.2015a
доминировал, поэтому, если какая-либо из записей с уникальным значениемa
, в данном случаеa==2
, имеет соответствующее значениеc
, такое чтоc>1
, тогда удаляются все записи, связанные с этим значением индексаa
. Итак, что-то вроде `df[df[c › 1 for all a == x] for all x in a] . - person pdevar   schedule 21.10.2015