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

pandas按id分组后筛选money高于分组首日值的行的实现方法

实现方法

你已经完成的按date字段排序的步骤是正确的,后续可以用两种常见方式完成筛选:

方法1:用transform生成辅助列过滤(性能更高,适合大数据量)

transform会将分组计算的结果广播到分组内的所有行,直接做布尔过滤即可:

# 确保按date排序(如果已经排好可跳过这步)
df = df.sort_values('date')
# 生成每个id分组首日的money辅助列
df['first_money'] = df.groupby('id')['money'].transform('first')
# 筛选符合条件的行,删除辅助列
res = df[df['money'] > df['first_money']].drop(columns='first_money').reset_index(drop=True)

方法2:用groupby.apply直接过滤(代码更简洁,适合小数据量)

df = df.sort_values('date')
res = df.groupby('id').apply(
    lambda x: x[x['money'] > x['money'].iloc[0]]
).reset_index(drop=True)

两种方法得到的输出均符合你的预期:

id  date  money
0   1   2.1     50
1   3  10.9     90

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:36:03