You need to enable JavaScript to run this app. 如何按球员分组,曾效力Knicks或Nets则给全组所有行赋值1?
优惠活动
大模型
产品
解决方案
定价
更多

如何按球员分组,曾效力Knicks或Nets则给全组所有行赋值1?

分组统一标记赋值的实现方案

该需求存在非常成熟的通用实现路径,是结构化数据处理中典型的组级判定回写场景,完全匹配“同组任意行命中目标值,则组内所有行统一赋值”的规则要求。

核心实现流程

  • 第一步:确定分组维度(本例中为球员姓名Name),将全量数据按该维度拆分为独立分组
  • 第二步:逐组校验目标列(本例中为球员效力球队Teams),判断组内是否存在命中指定值(Knicks/Nets)的行
  • 第三步:将组级判断结果(命中记为1、未命中记为0)统一同步到该分组下的所有数据行,即可得到目标输出结果

常用工具的实现示例

Python 数据分析(Pandas)

利用分组transform特性可以直接完成组值回写,无需额外拼接数据:

import pandas as pd
# 读取初始数据集
df = pd.read_clipboard(sep='|')
# 核心赋值逻辑:按Name分组,判断组内Teams列是否有目标命中
df['value'] = df.groupby('Name')['Teams'].transform(
    lambda team_series: int(team_series.isin(['Knicks', 'Nets']).any())
)

数据库查询(SQL)

借助窗口函数可以单次查询完成计算,不需要额外做表关联:

SELECT
  Name,
  Teams,
  -- 按球员姓名分组,组内只要有一行匹配目标球队就标记为1
  MAX(CASE WHEN Teams IN ('Knicks', 'Nets') THEN 1 ELSE 0 END)
    OVER (PARTITION BY Name) AS value
FROM nba_player_team_records;

桌面表格处理(Excel/WPS)

可以用条件计数函数完成组判定,公式直接向下填充即可:

=IF(OR(COUNTIFS($A:$A, $A2, $B:$B, "Knicks")>0, COUNTIFS($A:$A, $A2, $B:$B, "Nets")>0), 1, 0)

注:以上实现逻辑的输出结果与你给出的目标示例完全一致,即从未效力过Knicks或Nets的球员(如Michael Jordan、Reggie Miller)所有行赋值为0,曾效力过两支球队任意一支的球员(如Baron Davis、Jason Kidd、Kevin Durant、Allan Houston)所有行赋值为1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 09:06:05