python数据帧:删除有条件的行



我有一个熊猫数据帧:

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')

最新更新