gpt4 book ai didi

python - Pandas 集团 : How to get top n values based on a column

转载 作者:太空宇宙 更新时间:2023-11-03 15:04:48 27 4
gpt4 key购买 nike

如果这是一个基本问题,请原谅我,但我是 pandas 的新手。我有一个带有 A 列的数据框,我想根据 A 列中的计数获取前 n 行。例如,原始数据看起来像

A  B  C
x 12 ere
x 34 bfhg
z 6 bgn
z 8 rty
y 567 hmmu,,u
x 545 fghfgj
x 44 zxcbv

请注意,这只是我实际使用的数据的一小部分。

因此,如果我们查看 A 列,值 x 出现 4 次,y 出现 2 次,z 出现 1 次。如何根据此计数获取 A 列的前 n 个值?

print df.groupby(['A']).sum()

这给了我

A      B

x 6792117

但是当我这样做的时候

print len(df.groupby(['A']).get_group('x'))

我明白了

21

此外

len(df.index) 

给我

23657

那么 'A' == 'x' 的计数怎么会是 6792117,正如在 group by 的结果中看到的那样?我错过了什么?

更新

考虑

print df.groupby(['A']).describe()

给我

     Tags           DocID

x count 21.000000
mean 323434.142857
std 35677.410292
min 266631.000000
25% 292054.000000
50% 325575.000000
75% 347450.000000
max 380286.000000

这是有道理的。我只想获取 A 列中具有最大计数的行。

更新2

我做了

print df.groupby(['A'],as_index=False).count()

我明白了

         A       B      C
0 x 21 21
1 y 11 11
2 z 8 8

基本上,对于 A 列,标记 x 在 B 列中有 21 个条目,在 C 列中有 21 个条目。ColumnsB 和 C 在我的例子中是唯一的。这很好。现在我如何获得关于 C 列的前 n 行?

更新3

所以我试过了

import heapq
print heapq.nlargest(3,df.groupby(['A'],as_index=False).count()['C'])

我明白了

[151, 85, 72]

所以我知道对于 A 列,我将上述计数作为前 3 个计数。但我仍然不知道这些计数指的是 A 列的哪个值?例如,A 列中的哪个值的计数为 151?有什么方法可以链接这些信息吗?

最佳答案

IIUC 你可以使用函数 nlargest .

我尝试了您的示例数据并按 C 列获取前 2 行:

print df
A B C
0 x 12 ere
1 x 34 bfhg
2 z 6 bgn
3 z 8 rty
4 y 567 hmmu,,u
5 x 545 fghfgj
6 x 44 zxcbv

dcf = df.groupby(['A'],as_index=False).count()
print dcf
A B C
0 x 4 4
1 y 1 1
2 z 2 2

#get 2 largest rows by column C
print dcf.nlargest(2,'C')
A B C
0 x 4 4
2 z 2 2

关于python - Pandas 集团 : How to get top n values based on a column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138634/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com