在Pandas中查找True部分的长度

时间:2018-04-11 13:29:34

标签: python pandas subset

我有一系列真/假值的熊猫系列。我需要找到每次系列切换为True时的点数。

例如:

000011100000001100000001111100010000

会给我一个[3,2,5,1]

的结果

我不知道从哪里开始。我希望大熊猫有一些干净的方法。

2 个答案:

答案 0 :(得分:0)

这是一个使用itertools.groupby的解决方案:

from itertools import groupby

mystr = '000011100000001100000001111100010000'

s = pd.Series(list(map(int, mystr)))

res = [len(list(j)) for i, j in groupby(s) if i]

print(res)

# [3, 2, 5, 1]

答案 1 :(得分:0)

<强>设置

string = '000011100000001100000001111100010000'
s = pd.Series(list(string)).astype(int)

<强>解决方案
使用groupby + sumcumsum技巧

v = s.groupby(s.ne(s.shift()).cumsum()).sum()    
v[v > 0].tolist()
[3, 2, 5, 1]