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

如何使用Pandas的apply()方法按字典权重缩放足球统计数据列

使用Pandas的apply()实现足球数据列加权

首先要注意:你的权重字典里的键和DataFrame列名存在不匹配——字典里的Ass对应DataFrame的Ast,Fld对应Fls,得先修正权重字典的键名,否则无法正确匹配列:

# 修正后的权重字典
weights = {
    'Gls':8,
    'Ast':5,
    'SoT':1.5,
    'Sha':1.3,
    'Crs':1.2,
    'Fls':1.2
}

接下来用apply()方法实现加权,推荐按列处理(效率更高),代码如下:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'team': ['Arg'],
    'match': [987.],
    'Gls': [0.11],
    'Ast': [0.04],
    'SoT': [0.8],
    'Sha': [0.5],
    'Crs': [0.2],
    'Fls': [0.65]
})

# 使用apply按列加权,非权重列保持原值(乘1)
weighted_df = df.apply(lambda col: col * weights.get(col.name, 1), axis=0)

print(weighted_df)

代码说明:

  • axis=0表示按列处理,每一列作为参数传入lambda函数
  • col.name获取当前处理的列名,weights.get(col.name, 1)用于匹配对应权重,若列名不在权重字典中(比如team、match)则返回1,保持原列值不变
  • 最终得到的weighted_df就是各统计列按权重缩放后的结果

如果一定要按行处理(效率略低,适合小数据集),可以这样写:

weighted_df = df.apply(lambda row: pd.Series({
    col: row[col] * weights.get(col, 1) for col in row.index
}), axis=1)

内容的提问来源于stack exchange,提问作者8-Bit Borges

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:30:50