在pandas数据帧的分区中选择max

时间:2014-12-16 02:25:50

标签: python pandas subset

我有一个pandas数据帧。我的目标是只选择列C在组B中具有最大值的那些行。例如,当B是“1”时,C的最大值是311,所以我希望行C = 311且B =“一个“。

import pandas as pd
import numpy as np

df2 = pd.DataFrame({ 'A' : 1., 
    'A' : pd.Categorical(["test1","test2","test3","test4"]),
    'B' : pd.Categorical(["one","one","two","two"]),
    'C' : np.array([311,42,31,41]),
    'D' : np.array([9,8,7,6])
    })

df2.groupby('C').max()

输出应为:

test1 one 311 9
test4 two 41  6

1 个答案:

答案 0 :(得分:2)

您可以使用idxmax(),它返回最大值的索引:

maxes = df2.groupby('B')['C'].idxmax()
df2.loc[maxes]

输出:

Out[11]: 
       A    B    C  D
0  test1  one  311  9
3  test4  two   41  6