我想按多个列对Pandas Dataframe进行分组。每个行都有一个整数,一个名称和一个附加的数值。我希望最终的Dataframe包含Name具有最高整数的每一行。
values = {'Int': [1,1,1,2,2,1],
'Name': ['Tom', 'Jim', 'Jan','Tom', 'Tom', 'Lucas'],
'Bill':[0.5,0.2,0.2,0.7, 0.8, 0.2]}
df = pd.DataFrame.from_dict(values)
Int Name Bill
0 1 Tom 0.5
1 1 Jim 0.2
2 1 Jan 0.2
3 2 Tom 0.7
4 2 Tom 0.8
5 1 Lucas 0.2
通过对数据框进行分组,仅第0行应消失。第3和第4行仍应包含在数据框中。
答案 0 :(得分:2)
IIUC,您可以将 Int 列与每个 Name 的最大Int进行比较,如下所示:
df[df['Int'] == df.groupby('Name')['Int'].transform('max')]
output:
Int Name Bill
1 1 Jim 0.2
2 1 Jan 0.2
3 2 Tom 0.7
4 2 Tom 0.8
5 1 Lucas 0.2