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

如何使用groupby按分组根据两列差值填充目标列?

分组计算Top列的实现方案

你需求里的Max FGrating列本质是同HorseId分组内上一行的FGrating值,计算可按两种场景实现:


场景1:已存在Max FGrating列

直接按规则判断即可,代码如下:

import pandas as pd

# 先将Max FGrating列的空值转为NaN,统一数值类型
df['Max FGrating'] = pd.to_numeric(df['Max FGrating'], errors='coerce')

# 生成Yes/No格式的Top列
df['Top'] = df.apply(
    lambda row: 'Yes' if pd.notna(row['Max FGrating']) and (row['FGrating'] - row['Max FGrating'] >=4) else 'No',
    axis=1
)

# 若需要1/0格式的Top列,替换为以下代码即可
# df['Top'] = (pd.notna(df['Max FGrating']) & (df['FGrating'] - df['Max FGrating'] >= 4)).astype(int)

场景2:还未生成Max FGrating列

先按HorseId分组生成该列,再计算Top:

# 取同HorseId分组内上一行的FGrating作为当前行的Max FGrating
df['Max FGrating'] = df.groupby('HorseId')['FGrating'].shift(1)

# 后续执行和场景1完全相同的Top列计算逻辑即可

效果验证

用你提供的示例数据运行上述代码后,输出结果和你给出的Top列示例完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:54:01