如何对DataFrame分组子数据集应用扩展窗口计数功能?
Pandas分组实现扩展窗口累计计数
原始数据构造
import pandas as pd df = pd.DataFrame({ 'key1': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'], 'day': [1, 2, 3, 4, 1, 2, 3, 4], 'feat': [None, 'A', None, 'A', 'A', None, None, 'A'] })
解决方案代码
按指定键(支持多键)分组后,将feat列转换为布尔值('A'标记为1,None标记为0),再对每个分组执行累计求和,即可实现分组内独立的扩展窗口计数:
# 单键分组(实际场景多键分组只需传入列名列表,如['key1', 'key2']) df['count'] = df.groupby('key1')['feat'].apply(lambda x: (x == 'A').cumsum())
执行结果
key1 day feat count 0 a 1 None 0 1 a 2 A 1 2 a 3 None 1 3 a 4 A 2 4 b 1 A 1 5 b 2 None 1 6 b 3 None 1 7 b 4 A 2
逻辑说明
groupby('key1'):按指定列分组,多键分组时传入列名列表即可,每个分组内计数独立重置x == 'A':将feat列的元素转为布尔值,'A'对应True(运算时等价于1),None对应False(等价于0)cumsum():对布尔值序列执行累计求和,实现扩展窗口内的累计计数效果
内容的提问来源于stack exchange,提问作者thefrollickingnerd
相关产品推荐
相关产品推荐

