Pandas 根据条件删除整个熊猫组
我有这个df:Pandas 根据条件删除整个熊猫组,pandas,pandas-groupby,filtering,Pandas,Pandas Groupby,Filtering,我有这个df: Plate Route Speed Dif hour 0 0660182 RUTA 66 10 NaN 13 1 939CH001M RUTA 51 22 33.0 13 2 596NZ008M RUTA 102 0 34.0 13 3 0790024
Plate Route Speed Dif hour
0 0660182 RUTA 66 10 NaN 13
1 939CH001M RUTA 51 22 33.0 13
2 596NZ008M RUTA 102 0 34.0 13
3 0790024 RUTA 79 0 33.0 13
4 947CH045M RUTA 50 28 33.0 13
... ... ... ... ... ...
1279634 0120414 RUTA 12 0 NaN 5
1279635 1090016 200826 0 NaN 5
1279636 0350144 RUTA 35 0 NaN 5
1279637 006908 RUTA 106 0 NaN 5
1279638 0340071 RUTA 34 1 NaN 5
每当“Dif”为60或更多时,我想过滤板组(每个板有许多寄存器)。所以,我用这里的帖子试着:
f = lambda df: not df[df['Dif'] < 60].empty
filtered = df.groupby('Plate').filter(f)
f=lambda-df:not-df[df['Dif']<60]。空
过滤=df.groupby('Plate')。过滤器(f)
对于这个groupby,我仍然得到超过60的Dif值。这里怎么了?或者,如何使用groupby进行此筛选?(尝试使用大于,以防我的逻辑失败,但仍然无法获得)
感谢您的帮助。您可以使用
groupby.transform
:
# only select groups whose `Dif` are all < 60
mask = (df['Dif']<60).groupby(df['Plate']).transform('all')
df[mask]
#仅选择“Dif”均小于60的组
掩码=(df['Dif']
f = lambda df: (df['Dif']<60).all()
filtered = df.groupby('Plate').filter(f)