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

求写Python函数:输入球员姓名返回同聚类标签的所有球员姓名

需求说明

我已经完成球员数据的KMeans聚类,并在DataFrame中添加了cluster列,代码如下:

eval_players = pd.read_csv(r"file_location")

bld = eval_players ['buildup']
att = eval_players ['attack']
bld_att = np.column_stack((bld,att))
km_res = KMeans(n_clusters = 3).fit(bld_att)
cluster = km_res.cluster_centers_

plt.scatter(bld,att)
for k,row in eval_players.iterrows(): 
     plt.text(row['buildup'],row['attack'],row['Name'])
plt.scatter (cluster[:,0],cluster[:,1], s = 500)

clust = km_res.labels_
eval_players['cluster'] = clust.tolist()

我刚认真学编程两个月,对函数编写很陌生。试过用input函数,但后续逻辑搞不懂。现在需要一个函数:输入球员姓名,先获取他的聚类标签,再返回所有同标签的球员姓名。如果有合适的内置函数也请告知。

解决方案

自定义函数实现

你可以直接基于已有的eval_players DataFrame写一个简单函数,逻辑非常直接:

  1. 根据输入的球员姓名,筛选出对应的cluster值
  2. 用这个cluster值筛选所有同聚类的球员,提取姓名列

代码如下:

def get_same_cluster_players(player_name):
    # 获取目标球员的聚类标签
    target_cluster = eval_players.loc[eval_players['Name'] == player_name, 'cluster'].values[0]
    # 筛选同聚类的所有球员姓名
    same_cluster_players = eval_players.loc[eval_players['cluster'] == target_cluster, 'Name'].tolist()
    # 返回结果
    return same_cluster_players

使用示例

调用函数时直接传入球员姓名即可:

# 替换成你要查询的球员名字
print(get_same_cluster_players("梅西"))

补充说明

  • 不需要复杂的内置函数,用pandas的loc方法就能完成筛选,这是处理DataFrame最常用的方式之一
  • 如果担心输入的球员姓名不存在会报错,可以加个简单的判断:
def get_same_cluster_players(player_name):
    # 检查球员是否存在
    if player_name not in eval_players['Name'].values:
        return f"球员 {player_name} 不存在"
    target_cluster = eval_players.loc[eval_players['Name'] == player_name, 'cluster'].values[0]
    same_cluster_players = eval_players.loc[eval_players['cluster'] == target_cluster, 'Name'].tolist()
    return same_cluster_players

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:49:59