删除重复项,使该行在另一列中保持最高值

时间:2018-07-21 20:00:11

标签: python pandas

a = [['John', 'Mary', 'John'], [10,22,50]])
df1 = pd.DataFrame(a, columns=['Name', 'Count'])

给出这样的数据框,我想将“ Name”的所有相似字符串值与“ Count”值进行比较以确定最高值。我不确定如何在Python的数据框中执行此操作。

例如:在上述情况下,答案是:

  • 姓名计数
  • 3月22日
  • 约翰50

John 10的较低值已被删除(基于“名称”的相同值,我只想看到“计数”的最大值)。

在SQL中,它将类似于Select Case查询(其中,我选择Name == Name&Count> Case进行递归计数以确定最高编号),或者为每个名称创建一个For循环,但是据我所知由于对象的性质,DataFrames是一个坏主意。

是否可以使用Python中的DF执行此操作?我可以为每个变量创建一个新的数据框(一个只有John,然后获得最高值(df.value()[:1]或类似值。)但是由于我有数百个唯一条目,这似乎是一个糟糕的解决方案。 :D

1 个答案:

答案 0 :(得分:1)

sort_valuesdrop_duplicates

df1.sort_values('Count').drop_duplicates('Name', keep='last')

   Name  Count
1  Mary     22
2  John     50

或者像miradulo所说的,groupbymax

df1.groupby('Name').Count.max().reset_index()

   Name  Count
0  John     50
1  Mary     22