在条件

时间:2017-01-06 13:30:14

标签: python pandas dataframe

这对我来说有点棘手。假设我有这个数据帧:

Group    Mag    Morph
  1     -21.1     S
  1     -20.3     E
  1     -22.0     E
  2     -18.1     E
  2     -23.6     S
  2     -21.9     S
  3     -19.4     S
  3     -19.1     E

我想只选择最低'Mag'对应于'Morph'的'S'的组(即相同的'Group')。

例如,在这里:

    第1组中的
  • ,最低的是-22.0对应于'E'变形(因此未采取的组),

  • 对于第2组,它是-23.6,所以'S'(采取组),

  • ,对于第3组,-19.4,所以'S',所以分组。

因此会选择

Group    Mag    Morph
  2     -18.1     E
  2     -23.6     S
  2     -21.9     S
  3     -19.4     S
  3     -19.1     E

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以将filteridxmin一起用于每个组Morph列的检查值:

print (df.groupby('Group').filter(lambda x: x.loc[x.Mag.idxmin(), 'Morph'] == 'S'))
   Group   Mag Morph
3      2 -18.1     E
4      2 -23.6     S
5      2 -21.9     S
6      3 -19.4     S
7      3 -19.1     E