pandas:跨行的条件计数

时间:2014-05-14 19:37:06

标签: python pandas

我有一个数据框,其中列有几个月,行有各个部门。

                2013April  2013May  2013June
        Dep1        0         10        15
        Dep2        10        15        20

我想添加一个列,计算值大于0的月数。例如:

                2013April  2013May  2013June  Count>0 
        Dep1        0         10        15       2
        Dep2        10        15        20       3

此功能需要跨越的列数是可变的。我认为定义一个函数然后使用.apply是解决方案,但我似乎无法弄明白。

1 个答案:

答案 0 :(得分:14)

首先,选择您的列cols

df[cols].apply(lambda s: (s > 0).sum(), axis=1)

这利用了python中TrueFalse分别为10的事实。

实际上,有更好的方法:

(df[cols] > 0).sum(1)

因为这利用了numpy矢量化

%timeit df.apply(lambda s: (s > 0).sum(), axis=1)
10 loops, best of 3: 141 ms per loop

%timeit (df > 0).sum(1)
1000 loops, best of 3: 319 µs per loop