pandas - как выбрать строки на основе соединения неиндексированного столбца? - PullRequest
1 голос
/ 09 марта 2020

Рассмотрим следующий DataFrame -

In [47]: dati                                                                                        
Out[47]: 
                      x      y
frame face lmark              
1     NaN  NaN      NaN    NaN
300   0.0  1.0    745.0  367.0
           2.0    753.0  411.0
           3.0    759.0  455.0
2201  0.0  1.0    634.0  395.0
           2.0    629.0  439.0
           3.0    630.0  486.0

Как мы можем выбрать строки, где dati ['x']> 629,5 для все строки , имеющие одно и то же значение в 'frame' колонка. В этом примере я ожидаю, что результатом будет

                      x      y
frame face lmark              
300   0.0  1.0    745.0  367.0
           2.0    753.0  411.0
           3.0    759.0  455.0

, поскольку столбец 'x' в 'frame' 2201, 'lmark' 2.0 не превышает 629,5

1 Ответ

2 голосов
/ 09 марта 2020

Используйте GroupBy.transform с GroupBy.all для проверки, если все True с для групп и фильтрации boolean indexing:

df = dat[(dat['x'] > 629.5).groupby(level=0).transform('all')]
print (df)
                      x      y
frame face lmark              
300   0.0  1.0    745.0  367.0
           2.0    753.0  411.0
           3.0    759.0  455.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...