Pandas,如何过滤df以获得唯一的条目?

2024-10-01 17:42:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

ID  type value
1   A    8
2   A    5
3   B    11
4   C    12
5   D    1
6   D    22
7   D    13

我想过滤dataframe,这样我就有一个唯一的“type”attrybute出现(例如a只出现一次),如果有更多的行对“type”有相同的值,我想选择值更高的一行。 我想要的东西是:

^{pr2}$

我该如何对待熊猫?在


Tags: 数据iddataframevaluetypepr2attrybute
3条回答

一种方法是对数据帧进行排序,然后在groupby之后获取第一个帧。在

# first way
sorted = df.sort(['type', 'value'], ascending = [True, False])

first = sorted.groupby('type').first().reset_index()

另一种方法不一定只采用第一种方法,因此它可能会使所有ID对应于相同的最大值(而不是只取其中的一个)

^{pr2}$

示例:

数据

ID  type    value
1   A   8
2   A   5
3   B   11
4   C   12
5   D   1
6   D   22
7   D   13
8   D   22

第一种方法的结果是

type  ID  value
A   1      8
B   3     11
C   4     12
D   6     22

第二种方法保持ID=8

            ID
type value    
A    8       1
B    11      3
C    12      4
D    22      6
     22      8

(如果您不喜欢多重索引,可以在这里再次reset_index()

使用groupby“type”并只获取第一个对象- 数据框groupby(“类型”).first()

df[['type', 'value']].drop_duplicates(subset=['type'])

一般来说,如果你想要更多的列,你可以选择感兴趣的列,在我们的例子中我们选择了all,'type','value'。在

相关问题 更多 >

    热门问题