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

如何用Pandas按event_block分组统计blink事件的数量?

Pandas按分组统计指定事件数量的解决方案

需求

统计DataFrame里event_block每个分组(0到5)中,event_code列"blink"事件的出现次数,每个分组行数一致。

示例数据:

event_block     event_code
    0                 0         blink
    1                 0         blink
    2                 0         -1
    3                 0         -1
    4                 0         -1
    5                 1         -1
    6                 1         blink
    7                 1         -1
    8                 1         blink
    9                 1         -1  

问题点

你生成is_blink二进制列的方向是对的,但没做分组聚合——如果误用transform求和会让每行都显示分组的统计值,而我们需要的是每个分组一行的汇总结果。

几种简洁解法

解法1:布尔列分组求和

先标记出"blink"事件,再按分组求和:

# 生成布尔标记并分组统计
blink_counts = (df['event_code'] == 'blink').groupby(df['event_block']).sum().astype(int)
# 转成指定格式的DataFrame
result = pd.DataFrame({'blink_count': blink_counts})

解法2:分组后直接统计

通过groupby的apply方法直接计算每个分组内的"blink"数量:

blink_counts = df.groupby('event_block')['event_code'].apply(lambda g: (g == 'blink').sum())
result = pd.DataFrame({'blink_count': blink_counts})

解法3:交叉表快速统计

用crosstab生成分组与事件的频次表,直接提取"blink"的计数:

import pandas as pd
blink_counts = pd.crosstab(df['event_block'], df['event_code'])['blink']
result = pd.DataFrame({'blink_count': blink_counts})

输出结果

执行后会得到每个分组的"blink"计数,对应示例数据的输出为:

blink_count
event_block               
0                        2
1                        2

如果你的数据包含0-5所有分组,未出现"blink"的分组会自动显示0,符合你的期望输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:52:38