Groupby没有丢失列

时间:2016-04-26 09:25:45

标签: python pandas dataframe

我遇到了pandas数据帧的问题。我有一个包含三列的数据框,前两个是标识符(str),第三个是数字。

我想将它分组,以便我将第一列作为最大值获得第三列,将第二列与第三列相对应。

那不太清楚,让我们举个例子。我的数据框架如下:

    id1              id2                amount
0   first_person     first_category     18
1   first_person     second_category    37
2   second_person    first_category     229
3   second_person    third_category     23

如果您需要,可以使用以下代码:

df = pd.DataFrame([['first_person','first_category',18],['first_person','second_category',37],['second_person','first_category',229],['second_person','third_category',23]],columns = ['id1','id2','amount'])

我想得到:

    id1              id2                amount
0   first_person     second_category    37
1   second_person    third_category     229

我尝试了一种groupby方法,但它让我放松了第二列:

result = df.groupby(['id1'],as_index=False).agg({'amount':np.max})

1 个答案:

答案 0 :(得分:1)

IIUC你希望在'id1'上groupby并使用idxmax确定最大金额的行并使用它来索引原始df:

In [9]:
df.loc[df.groupby('id1')['amount'].idxmax()]

Out[9]:
             id1              id2  amount
1   first_person  second_category      37
2  second_person   first_category     229