我有一个熊猫数据帧:
A B C
0 10006 3 9415640
1 10006 8 90
2 10010 10 8028
3 10010 12 1514942
4 10010 14 3098177
5 10010 15 271445
6 10010 16 1539139
7 10010 17 48939
8 10010 19 6220
9 10010 2 5710
10 21019 1 120
我想做的是,对于列A中的每个唯一元素,只保留列C中值最大的行。
对于上面的例子,期望的输出是:
A B C
0 10006 3 9415640
1 10010 14 3098177
2 21019 1 120
您可以使用布尔索引并获取按A:分组的列C的max
df[df['C'] == df.groupby('A')['C'].transform('max')]
打印:
>>> df
A B C
0 10006 3 9415640
4 10010 14 3098177
10 21019 1 120
您可以按C
列中的值进行排序,然后按A
对它们进行分组,并获得第一个出现的值。
df.sort_values(['C'], ascending=False).groupby('A').first()
使用此代码:
您的数据帧:data
代码:
data[data.groupby(['A'])['C'].transform(max) == data['C']]
输出:
A B C
10006 3 9415640
10010 14 3098177
21019 1 120
按A分组并保持最大值。你可以试试这个代码:
df.groupby('A').max('C')