Pandas 熊猫-如何基于非索引列的连接选择行?
考虑以下数据帧-Pandas 熊猫-如何基于非索引列的连接选择行?,pandas,dataframe,indexing,Pandas,Dataframe,Indexing,考虑以下数据帧- In [47]: dati Out[47]: x y frame face lmark 1 NaN NaN NaN NaN 300 0.0 1.0 745.0 367.0
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
由于“frame”2201的“x”列,“lmark”2.0不大于629.5,因此如果每组的所有True
s均为真,则使用进行测试,并过滤:
回答得很好-谢谢!我到处都在搜索GroupBy.transform的文档。你找到了吗?@user2309803-是的,你可以检查一下,我发现了另一个解决方案,它使用一个布尔数组,对每组“frame”
bool_数组=(dati['x']>629.5)。all(level='frame')
,然后使用它的索引访问数据帧dati.loc[bool_数组.index[bool_数组]]
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