我有一系列真/假值的熊猫系列。我需要找到每次系列切换为True时的点数。
例如:
000011100000001100000001111100010000
会给我一个[3,2,5,1]
的结果我不知道从哪里开始。我希望大熊猫有一些干净的方法。
答案 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
+ sum
和cumsum
技巧
v = s.groupby(s.ne(s.shift()).cumsum()).sum()
v[v > 0].tolist()
[3, 2, 5, 1]