我有一个数据框,其中列有几个月,行有各个部门。
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是解决方案,但我似乎无法弄明白。
答案 0 :(得分:14)
首先,选择您的列cols
df[cols].apply(lambda s: (s > 0).sum(), axis=1)
这利用了python中True
和False
分别为1
和0
的事实。
(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