Python Dataframe根据其中一列中的最大值选择行

时间:2017-03-28 13:23:08

标签: python pandas

我在python中有一个数据帧(很多行,2列)。我想根据第2列中的最大值在第1列中使用唯一值修改DF(如果有帮助,第2列按升序排序)。我可以写一个循环,但更喜欢一个或两个行解决方案。感谢。

实施例

ID         Value
100       11
100       14
100       16
200       10
200       20
200       30
300       45
400        0
400       25

期望的结果

100       16
200       30
300       45
400       25

3 个答案:

答案 0 :(得分:7)

您希望在'a'列上groupby,然后使用idxmax获取最大值的索引,并使用这些索引来索引orig df:

In [12]:
df.loc[df.groupby('a')['b'].idxmax()]

Out[12]:
     a   b
2  100  16
5  200  30
6  300  45
8  400  25

答案 1 :(得分:2)

如果您不需要原始索引但只需要ID的最高值,则可以使用groupbymax

print(df.groupby("ID").max())

     Value
ID  
100     16
200     30
300     45
400     25

答案 2 :(得分:0)

输入数据

date = {'ID':[100,100,100,200,200,200,300,400,400],'Value':[11,14,16,10,20,30,45,0,25]}      
df= pd.DataFrame.from_dict(dane)    

例如:

    ID  Value
0  100     11
1  100     14
2  100     16
3  200     10
4  200     20
5  200     30
6  300     45
7  400      0
8  400     25

和解决方案:

df = df.groupby('ID')[['Value']].max().reset_index()

输出:

    ID  Value
0  100     16
1  200     30
2  300     45
3  400     25