【发布时间】:2020-10-07 19:19:22
【问题描述】:
如果我有以下熊猫系列:
import pandas as pd
s = pd.Series([0,1,1,0,1,0,0,1,1,0,1,1,1])
我想要一个连续计数的列表,即在这种情况下,所需的输出是
[2,1,2,3]
我怎样才能得到上面的输出?
【问题讨论】:
如果我有以下熊猫系列:
import pandas as pd
s = pd.Series([0,1,1,0,1,0,0,1,1,0,1,1,1])
我想要一个连续计数的列表,即在这种情况下,所需的输出是
[2,1,2,3]
我怎样才能得到上面的输出?
【问题讨论】:
让我们尝试使用cumsum 创建新密钥
s[s==1].groupby(s.eq(0).cumsum()).sum()
1 2
2 1
4 2
5 3
dtype: int64
#s[s == 1].groupby(s.eq(0).cumsum()).sum().tolist()
#[2, 1, 2, 3]
【讨论】:
以下应该有效:
[len(i) for i in ''.join([str(i) for i in list(s)]).split('0') if '1' in i]
输出:
[2, 1, 2, 3]
【讨论】: