You need to enable JavaScript to run this app. Python基于Pandas实现数据集双数据点调取对比及NBA球员1v1胜负判定
优惠活动
大模型
产品
解决方案
定价
更多

Python基于Pandas实现数据集双数据点调取对比及NBA球员1v1胜负判定

1v1球员对战判定功能实现方案

前置核对操作

  • 运行原有基础代码后,先执行print(df.columns.tolist())打印数据集全部列名,逐一确认三类信息:
    • 存储球员姓名的对应列名(常见字段如player_name、球员)
    • 6项对比指标的实际列名:投篮命中率、命中三分数、场均篮板、场均抢断、场均封盖、场均得分
    • 确认数据集不存在重复的同球员条目,避免调取错数据
  • 原有代码中导入的seaborn、matplotlib模块在本功能中无实际作用,可注释减少冗余。

可直接修改复用的代码

import pandas as pd

# 原有数据读取逻辑
df = pd.read_csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vSTbHMm7RQOxOj6yl17g7MLfCBFghAACUie0k3HLB_ja9E0t0HpENl4ydN4b58UdCCiBTB9rvj0zy-O/pub?output=csv")

# 自动把统计指标列转成数值类型,避免字符串对比报错
df[["投篮命中率", "命中三分数", "场均篮板", "场均抢断", "场均封盖", "场均得分"]] = df[["投篮命中率", "命中三分数", "场均篮板", "场均抢断", "场均封盖", "场均得分"]].apply(pd.to_numeric, errors='coerce')

# --------------------------
# 手动替换区:把下面的字段名换成你实际核对到的列名
player_name_col = "球员"
compare_metrics = [
    "投篮命中率",
    "命中三分数",
    "场均篮板",
    "场均抢断",
    "场均封盖",
    "场均得分"
]
# --------------------------

def get_player_metric(player_name):
    # 匹配球员时统一转小写,去掉前后空格,避免格式差异导致匹配失败
    match_result = df[df[player_name_col].str.lower() == player_name.strip().lower()]
    if match_result.empty:
        print(f"未在数据集中找到球员:{player_name},请检查拼写后重试")
        return None
    # 取第一条匹配到的统计记录
    return match_result.iloc[0][compare_metrics]

def judge_1v1_winner(first_player, second_player):
    first_metrics = get_player_metric(first_player)
    second_metrics = get_player_metric(second_player)
    if first_metrics is None or second_metrics is None:
        return
    
    first_win = 0
    second_win = 0
    for metric in compare_metrics:
        if first_metrics[metric] > second_metrics[metric]:
            first_win +=1
        elif second_metrics[metric] > first_metrics[metric]:
            second_win +=1

    print(f"\n逐指标对比结果:{first_player} 领先{first_win}项,{second_player} 领先{second_win}项")
    if first_win >=4:
        print(f"判定结论:{first_player} 是1v1对战的大概率胜方")
    elif second_win >=4:
        print(f"判定结论:{second_player} 是1v1对战的大概率胜方")
    else:
        print(f"判定结论:双方指标胜负差不足4项,势均力敌,无明确大概率胜方")

# 交互式调用入口
if __name__ == "__main__":
    input_p1 = input("请输入第一位对战球员的姓名:")
    input_p2 = input("请输入第二位对战球员的姓名:")
    judge_1v1_winner(input_p1, input_p2)

常见问题排查

  • 出现数字对比报错:确认已在数据读取后添加了数值类型转换的代码,将指标列从字符串格式转为可计算的数值格式
  • 明明有球员却匹配失败:检查球员列名是否填写正确,确认姓名输入时没有多余的空格
  • 同球员取到错误数据:提前过滤掉不需要的历史赛季、不同球队的重复球员记录,只保留目标时间段的统计值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 01:15:00