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

pandas groupby按pid分组后实现双条件判断(标签计数≥2、首条True时年龄<45)

实现代码

你可以直接在groupby的apply中同时判断两个条件即可,完整代码如下:

# 先确保数据按事件日期升序排列(保证首次出现的label=True是时间最早的记录
a = a.sort_index(level=["pid", "event_date"])

# 分组判断双条件
result = a.groupby("pid").apply(
    lambda x: (x["label"].sum() >= 2) and (x.loc[x["label"], "age"].iloc[0] < 45) if x["label"].any() else False
).to_frame("label")

逻辑说明

  • 第一个判断x["label"].sum() >=2沿用你原有的逻辑,判断该pid下label为True的记录数≥2
  • 第二个判断x.loc[x["label"], "age"].iloc[0] < 45:先筛选出该pid下所有label为True的行,取第一条(数据按日期排序后第一条就是时间最早的首次出现记录)对应的age判断是否小于45
  • 前置判断if x["label"].any()是为了避免该pid下完全没有label为True的记录时,iloc[0]取数报错的问题

结果验证

运行上述代码后输出的result结果为:

label
pid
1   False
5    True

完全符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:24:03