首页 > 解决方案 > 使用 Pandas 删除具有相同 id 的所有行的最小值高于最小值的行

问题描述

所以,我有以下数据框:

        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']

标签: pythonexcelpandasdataframepandas-groupby

解决方案


使用transform( idxmin: 只会返回最小值的第一个索引,在你的情况下你有重复,所以它不会返回所有索引)

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

推荐阅读