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

如何基于指定条件为已有Pandas DataFrame新增Race列

你使用where的方法不符合需求有两个核心原因:

  1. pd.DataFrame.where的逻辑是「条件成立保留原值,条件不成立使用填充值」,你写的参数逻辑完全相反
  2. 没有按EVENT_ID分组处理,无法实现每个赛事单独匹配获胜场次的SELECTION_TRAP值

实现方案

方式一:全量填充Race列后过滤

如果需要先给所有行(包括WIN_LOSE=0的行)都补全对应赛事的Race值,再过滤保留获胜行,用下面的代码:

# 按EVENT_ID分组,将每组WIN_LOSE=1对应的SELECTION_TRAP赋值给组内所有行的Race列
df['Race'] = df.groupby('EVENT_ID')['SELECTION_TRAP'].transform(
    lambda s: s[df.loc[s.index, 'WIN_LOSE'] == 1].iloc[0]
)
# 过滤保留WIN_LOSE=1的行
df = df[df['WIN_LOSE'] == 1].reset_index(drop=True)

方式二:直接筛选后生成Race列

因为你最终只保留WIN_LOSE=1的行,这些行的SELECTION_TRAP本身就是要赋值给Race的值,可以直接简化实现:

# 先筛选获胜行,再直接赋值Race列等于SELECTION_TRAP
df = df[df['WIN_LOSE'] == 1].copy()
df['Race'] = df['SELECTION_TRAP']
df = df.reset_index(drop=True)

两种方式运行后得到的结果都和你给出的预期输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:06:02