如何根据python

时间:2017-08-21 11:55:09

标签: python pandas loops dataframe minimum

我有一个看起来像这样的数据框:(处理有多个可能的字符变量,我只是简化了问题)

ID              Position            Treatment
--20AxECvv-         0           A
--20AxECvv-         -1          A
--20AxECvv-         -2          A
--h9INKewQf-        0           A
--h9INKewQf-        -1          B
--h9INKewQf-        -2          B
--h9INKewQf-        -3          B
--h9INKewQf-        -4          B
--h9INKewQf-        -5          B
--h9INKewQf-        -6          B
--h9INKewQf-        -7          B
zZU7a@8jN           0           B
QUeSNEXmdB          0           C
QUeSNEXmdB          -1          C
qu72Ql@h79          0           C

我只想用Python保持每个ID的最小位置。

结果将是:

 ID              Position            Treatment
--20AxECvv-         -2          A
--h9INKewQf-        -7          B
zZU7a@8jN           0           B
QUeSNEXmdB          -1          C
qu72Ql@h79          0           C

我是初学者,我想我必须使用groupby并按最小位置进行过滤,但我知道如何编写它。在此先感谢:)

2 个答案:

答案 0 :(得分:1)

您还可以使用df.sort_values对数据框进行排序,并使用df.drop_duplicates删除重复数据:

In [795]: df.sort_values('Position').drop_duplicates('ID')
Out[795]: 
              ID  Position Treatment
10  --h9INKewQf-        -7         B
2    --20AxECvv-        -2         A
13    QUeSNEXmdB        -1         C
11     zZU7a@8jN         0         B
14    qu72Ql@h79         0         C

答案 1 :(得分:0)

使用groupby和min

df.groupby('ID').min()