我有一个包含两列的数据框:value
和product
。将有重复的产品,但是具有不同的值。我要做的是获取所有产品,但删除所有重复项。删除重复项的条件是获取具有最低值的行,然后删除其余的行。例如,我想要这样的东西:
之前:
product value
A 25
B 45
C 15
C 14
C 13
B 22
之后
product value
A 25
B 22
C 13
如何做到这一点,以便仅在新数据框中添加价值最低的重复列?
答案 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.duplicate
和sort_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
在这种情况下,使用
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