仅获取价值最低的重复列

时间:2018-10-18 02:47:36

标签: python pandas

我有一个包含两列的数据框:valueproduct。将有重复的产品,但是具有不同的值。我要做的是获取所有产品,但删除所有重复项。删除重复项的条件是获取具有最低值的行,然后删除其余的行。例如,我想要这样的东西:

之前:

product  value
A        25
B        45
C        15
C        14 
C        13
B        22

之后

product  value
A        25
B        22
C        13

如何做到这一点,以便仅在新数据框中添加价值最低的重复列?

3 个答案:

答案 0 :(得分:2)

df.sort_values('value').groupby('product').first()
#         value
#product       
#A           25
#B           22
#C           13

答案 1 :(得分:0)

您可以先sort_values,然后再drop_duplicates

res = df.sort_values('values').drop_duplicates('product')

答案 2 :(得分:0)

在满足我的要求的同时,即使您不需要使用drop.duplicatesort_values,因为我们正在寻找dataFrame中每个product列的最小值。因此,可以通过以下几种方法进行操作...

我相信一种简化的方法是使用pandas.DataFrame.idxmin查看唯一索引。

>>> df
  product  value
0       A     25
1       B     45
2       C     15
3       C     14
4       C     13
5       B     22

>>> df.loc[df.groupby('product')['value'].idxmin()]
  product  value
0       A     25
5       B     22
4       C     13

OR

  

在这种情况下,使用Compute min of group values来使用groupby.min()的另一种最简洁的方法是:

>>> df
  product  value
0       A     25
1       B     45
2       C     15
3       C     14
4       C     13
5       B     22

>>> df.groupby('product').min()
         value
product
A           25
B           22
C           13