首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas:计算组内的连续True值

Pandas:计算组内的连续True值
EN

Stack Overflow用户
提问于 2021-02-06 05:30:47
回答 1查看 39关注 0票数 1

我已经找到了许多类似问题的答案,但它们不能用于groupby,或者它们不是在寻找连续的布尔值。

我正在寻找一种方法(非循环)来计算一个组中连续的过去真值的数量。

代码语言:javascript
复制
data = [
    [False, 'CLE',],
    [True, 'CLE'],
    [True, 'CLE'],
    [False, 'MON'],
    [False, 'MON'],
    [True, 'MON'],
    [True, 'CLE'],
    [False, 'CLE'],
    [False, 'CLE']
]
# Create the pandas DataFrame
df = pd.DataFrame(data,
                  columns=["a", "city"])

所需输出:

代码语言:javascript
复制
0
1
2
0
0
1
3
0
0

我一直在尝试:

代码语言:javascript
复制
df['x']=df.a.groupby((df.city!=df.city.shift()).apply(lambda x: x==True).cumsum()).cumcount()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-06 06:04:22

要识别连续的True块,我们可以在False上使用cumsum。然后我们可以在这些块上分组:

代码语言:javascript
复制
blocks = (~df['a']).groupby(df['city']).cumsum()

output = df.groupby([blocks, 'city'])['a'].cumsum()

输出:

代码语言:javascript
复制
0    0
1    1
2    2
3    0
4    0
5    1
6    3
7    0
8    0
Name: a, dtype: int64
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66070839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档