Pandas GroupBy:如何基于列获取前n个值

AbtPst

如果这是一个基本问题,请原谅我,但我是熊猫的新手。我有一个带有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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Pandas Groupby:如何获取不同的列值

如何基于groupby操作产生的组获取pandas DataFrame的组ID值的列

从 Pandas groupby 中获取前 N 个结果

Python Pandas-如何获取前n个值以及所有其他值的总和

如何在 Pandas 上获取每列值的最后 5 行(放弃前的 5 个操作)

如何获取数据帧 Pandas 中每一行的前 n 个值

基于基于n-1索引记录的值的pandas groupby

如何使用pandas groupby函数基于groupby值应用公式

Pandas Groupby多列-前N名

基于多列值的Python pandas groupby值

如何基于Pandas Groupby中的另一个系列获得最大值

如何获取python pandas中每列的n个最频繁或最高值?

在Pandas中使用groupby按列值获取前3行

pandas:如何在数据框中保留前N个(仅N个)值(Pandas)

Pandas-对groupby中的聚合列进行排序并过滤前n个列

如何按 ID 连续获取前 3 个值并将它们返回到新列 pandas

Pandas - 前 n 个最大值 groupby 熊猫数据框

Pandas 为 groupby 中的每一列获取三个最常见的值

pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

通过pandas获取基于其他列的值的最新值

pandas df获取与groupby的最大值关联的列的值

如何基于另一个布尔数组的列值删除Pandas数据框列?

如何基于Pandas数据框中的另一个列值添加列?

如何从Pandas Groupby中的多个列中获取唯一值

如何根据pandas.groupby().max()中一列的最大值获取整行?

在Python中使用Pandas从每列中获取前4个最大值

Pandas GroupBy 列以获取“模式”

如何基于Pandas中的另一个DataFrame更改DataFrame的某些列中的值

pandas 中基于 groupby 的高亮值