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

Pandas如何为已排序DataFrame各分组的最后一行指定列赋值

问题解决:Pandas分组给每组最后一行指定列赋值

错误原因

原有代码报错是因为df.reset_index().groupby('colA').tail(1)返回的是筛选后的子DataFrame对象,不能直接作为.loc的行索引参数使用,且额外调用reset_index属于多余操作。

正确实现

写法1:直接取分组最后一行的原索引赋值

import pandas as pd

# 初始化数据
df = pd.DataFrame([['a', 1], ['a', 2], ['b', 1], ['b', 2]],
                  columns=['colA', 'colB'])

# 新建colC列赋初始值
df['colC'] = 'Not Current'

# 分组取最后一行的原索引,对应赋值
df.loc[df.groupby('colA').tail(1).index, 'colC'] = 'Current'

运行后输出结果如下:

序号colAcolBcolC
0a1Not Current
1a2Current
2b1Not Current
3b2Current

写法2:用分组累计计数做布尔筛选(可选)

如果需要一行完成赋值,可以用分组倒序累计计数判断是否为最后一行:

df['colC'] = df.groupby('colA').cumcount(ascending=False).eq(0).map({True: 'Current', False: 'Not Current'})

两种写法均默认你已提前完成DataFrame的分组内排序,符合你提到的前置条件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:00