Python Pandas如何优雅实现按条件分组累计计数 球队累计负场统计
解决方案
你之前的实现错误来自于fillna(method='ffill')没有按球队分组执行,导致A队的最终累计负场值被错误填充到了B队的开头行。
仅需一行代码即可实现需求:
df['Losses'] = df.groupby('Team')['Point_Diff'].transform(lambda x: (x < 0).cumsum())
实现逻辑
按球队分组后,对每组的净胜分列判断是否为负(布尔值True对应1、False对应0),直接对布尔序列做累加即可得到累计负场数:非负场次累加0,自动沿用最近一次的累计值,完全符合需求。
运行结果
Team Point_Diff Losses 0 A -4 1 1 A 5 1 2 A -1 2 3 A 2 2 4 A 2 2 5 B 6 0 6 B -5 1 7 B -4 2 8 B 3 2 9 B -1 3
内容的提问来源于stack exchange,提问作者bismo
相关产品推荐
相关产品推荐

