使用Pandas删除值大于所有具有相同ID的所有行的最小值的行

时间:2018-12-26 14:55:21

标签: python excel pandas dataframe pandas-groupby

所以,我有以下数据框:

        id    value
  0     a       1
  1     a       1
  2     a       2
  3     b       3
  4     b       3

例如,对于ID为'a'的行,最小值为1;对于ID为'b'的行,最小值为3,因此不会删除任何行。

输出:

        id    value
  0     a       1
  1     a       1
  2     b       3
  3     b       3

到目前为止,我仅对具有相同ID的行进行了分组,并找到了它们的最小值,但是找不到删除所有预期行的方法。 我使用了以下命令:

min_values = df.loc[df.groupby(['id'])['value'].idxmin()]['value']

1 个答案:

答案 0 :(得分:2)

使用transformidxmin:只会返回最小值的第一个索引,如果您重复的话,则不会返回所有索引)

df[df.value==df.groupby('id').value.transform('min')]
Out[257]: 
  id  value
0  a      1
1  a      1
3  b      3
4  b      3