如果这是一个基本问题,请原谅,但我对熊猫还不熟悉。我有一个带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
那么,在group by的结果中,'A' == 'x'
的计数如何可以是6792117
?我错过了什么?
更新
考虑
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栏,我把上面的数字作为前三个数字。但我还是不知道这些计数指的是A列的哪个值?例如,A列中的哪个值的计数为151?有没有办法把这些信息联系起来?
我尝试过的一种方法
给我
审核人
给我
所以我得到了期望的结果,因为我可以看到前5个值是基于A列的计数的,但是肯定有更好的方法来做到这一点?
你可以使用函数^{} 。
我尝试您的示例数据并按列获取前两行
C
:相关问题 更多 >
编程相关推荐