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

Pandas:如何按另一列True值分段聚合指定列对应值

解决方案

可以通过Pandas的分组和掩码操作实现需求,步骤如下:

1. 创建示例DataFrame

import pandas as pd

df = pd.DataFrame({
    'column1': [False, False, False, True, False, False, True],
    'column2': [1, 1, 1, 1, 1, 1, 1]
})

2. 核心处理逻辑

# 生成分组键:每次遇到True时分组号递增
group_key = df['column1'].cumsum()

# 掩码操作:将True位置的column2值设为NaN,只保留False位置的数值
temp = df['column2'].mask(df['column1'])

# 分组累加计算每组内False对应的column2总和
cumulative_sum = temp.groupby(group_key).cumsum()

# 仅在True位置保留累加结果,其余位置设为0
df['column3'] = cumulative_sum.where(df['column1'], 0).fillna(0).astype(int)

3. 结果验证

运行后df['column3']的输出为:

0    0
1    0
2    0
3    3
4    0
5    0
6    2
Name: column3, dtype: int64

逻辑解释

  • group_key通过对column1的True值累加,把数据划分为「上一个True之后到当前True之前」的分组;
  • temp掩码操作过滤掉True位置的数值,避免干扰累加计算;
  • 分组累加后,仅在True位置保留该组的累加总和,其余位置置0,正好匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:31:04