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

Pandas分组取每组首行并给全表result字段赋值的实现问题

实现方案

方案1(推荐,更简洁高效)

不需要单独提取分组首行,排序后直接通过分组累计计数实现赋值:

# 你原有的排序逻辑
df = df.sort_values(["id","name","value_1","value_2"], ascending=True)
# 直接生成result字段:分组内第一行赋值1,其余为0
df['result'] = df.groupby(["id","name","value_1","value_2"]).cumcount().eq(0).astype(int)

逻辑说明:groupby.cumcount()会从0开始给每个分组内的行按顺序编号,分组第一行的编号就是0,用eq(0)判断后转整数,刚好得到1和0的结果。

方案2(适配你现有已生成first_row_per_group的场景)

如果你已经完成了首行的result=1赋值,可以通过合并+空值填充实现全表赋值:

# 给首行结果集重置索引,保证分组键是普通列用于后续合并
first_row_per_group = first_row_per_group.reset_index()[["id","name","value_1","value_2", "result"]]
# 左合并回原df,非首行的result字段会返回NaN,直接填充0即可
df = df.merge(
    first_row_per_group, 
    on=["id","name","value_1","value_2"], 
    how="left"
).fillna({"result": 0})
# 可选:将result转换为整数类型
df["result"] = df["result"].astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:45:03