You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中判断DataFrame列A的True是否为列B上次True后的首次出现

Pandas高效实现方案

核心逻辑是通过B列的累计值划分区间,每个区间内仅标记A列的第一个True为有效结果,全程使用向量化操作,无循环,处理百万行级数据也可在毫秒级完成。

实现代码

import pandas as pd

# 生成B列的分组ID:每次B出现True时分组ID+1,代表B上次True后的区间
group_id = df['B'].cumsum()
# 三个判断条件同时满足才标记为True:
# 1. A列当前值为True
# 2. 已经出现过至少一次B的True(group_id>0,排除初始无B True的区间)
# 3. 当前是本分组内A的第一个True
df['C'] = df['A'] & (group_id > 0) & (~df['A'].groupby(group_id).cumsum().gt(1))

验证示例

示例1测试

输入数据:

df = pd.DataFrame({
    'A': [False, False, True, False, True, False, True, False, True],
    'B': [True, False, False, False, False, True, False, False, False]
})

运行代码后输出的df['C']值为[False, False, True, False, False, False, True, False, False],和预期结果完全一致。

示例2测试

输入数据:

df = pd.DataFrame({
    'A': [True, False, False, True, False, True, False, True, False],
    'B': [False, True, False, False, False, False, True, False, False]
})

运行代码后输出的df['C']值为[False, False, False, True, False, False, False, True, False],和预期结果完全一致。


内容的提问来源于stack exchange,提问作者supermodo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:36:07