首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫在群中检查最后n行的真假

熊猫在群中检查最后n行的真假
EN

Stack Overflow用户
提问于 2021-02-05 00:47:31
回答 1查看 245关注 0票数 1

如果最后的N (3)行或当前中的任何一行或当前在一个组中为true,则我希望输出为True。

这就是我一直在尝试这样做的,要么是使用transform,要么是因为它只有一列。

代码语言:javascript
复制
import pandas as pd

data = [
    ['False', 'CLE',],
    ['False', 'CLE'],
    ['True', 'CLE'],
    ['False', 'MON'],
    ['False', 'CLE'],
    ['False', 'CLE'],
    ['False', 'CLE'],
    ['False', 'CLE']
]

# Create the pandas DataFrame
df = pd.DataFrame(data,
                  columns=["bool", "city"])

df['x'] = df.groupby(['city'])['bool']\
            .transform(lambda x: x==True & 
                                 x.index\
                                  .isin(x.index[-2:]))

产出应是:

代码语言:javascript
复制
False
False
True
False
True
True
False
False
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-05 00:56:51

您可以在组中获取您的bool列的rolling和,然后使用astype(bool)将其设置为True,如果该行或以前的任何N是True (即任何非零和)。首先,我们需要使您的值Boolean

代码语言:javascript
复制
df['bool'] = df['bool'].map({'False': False, 'True': True})

df['x'] = (df.groupby('city')['bool'].rolling(3, min_periods=0)
             .sum()
             .astype(bool)
             .reset_index(0, drop=True))

代码语言:javascript
复制
    bool city      x
0  False  CLE  False
1  False  CLE  False
2   True  CLE   True
3  False  MON  False
4  False  CLE   True
5  False  CLE   True
6  False  CLE  False
7  False  CLE  False
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66056039

复制
相关文章

相似问题

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