如果这是一个基本问题,请原谅我,但我是熊猫的新手。我有一个带有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
在该组的结果可知?我想念什么?
更新资料
考虑
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个条目。在我的情况下,列B和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
。
我尝试您的示例数据,并按列获取前2行C
:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句