IIUC在需要时使用丢弃每个组的所有最大行数:
df['Dist'] = df['Dist'].astype(float)
out = df[df['Dist'].ne(df.groupby('Id')['Dist'].transform('max'))]
如果需要,则每个组仅删除最多一行:
out = df.drop(df.groupby('Id')['Dist'].idxmax())
如果每组需要最少的行数:
out = df.loc[df.groupby('Id')['Dist'].idxmin()]