我有一个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
答案 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