pandas数据框:如何过滤列,然后构建计数和其他列的总和

时间:2015-02-16 17:02:59

标签: python python-2.7 pandas

问题在于:我有以下数据:

df = pandas.DataFrame({'A': [10, 10, 20, 20, 30, 20, 10, 20, 30, 30],
                'B': [1001, 1002, 2002, 2003, 3001, 2003, 1002, 2003, 3005, 3005],
                'C': numpy.random.randn(10),
                'D': numpy.random.randn(10)})

应用此功能:

df.groupby('A').agg({'B': max, 'C': numpy.count_nonzero})

我明白了:

    C     B
A          
10  3  1002
20  4  2003
30  3  3005

但是当它是B的最大值(由A分组)的一部分时,我只想要C的计数。我在之前的帖子中了解到,分组可以像这样完成 - 仍然不计C:

df.groupby('A')['B'].max()

这给了我每个A的最大B。

A
10    1002
20    2003
30    3005
Name: B, dtype: int64

我错过了获得此结果的最后一步:

A    B      C
10   1002   2 # 2, because there are 2 rows of B = 1002 with A = 10
20   2003   3
30   3005   2

在我的项目中,我事先并不知道B的值,因此我无法预先设置过滤器。

0 个答案:

没有答案