考虑以下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
对于所有行,我们如何在'frame'列中选择dati ['x']> 629.5的行。对于此示例,我希望结果为
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
因为“框架” 2201的列“ x”,“ lmark” 2.0不大于629.5
答案 0 :(得分:2)
将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