我有一个DataFrame,我想获取该集群中球队的最新进球来应用ewm_mean(),即创建一个
EWM_COLUMN
,如下例所示:
季节 | 周 | 首页 | 离开 | 首页目标 | 客场进球 | 集群_home | Cluster_away | 集群_对_密钥 |
---|---|---|---|---|---|---|---|---|
2024 | 27.0 | A队 | F队 | 3 | 2 | 4 | 1 | 1_4 |
2024 | 27.0 | B队 | G队 | 1 | 3 | 2 | 2 | 2_2 |
2024 | 27.0 | C队 | 团队H | 1 | 0 | 5 | 3 | 3_5 |
2024 | 27.0 | D队 | 团队我 | 0 | 1 | 3 | 1 | 1_3 |
2024 | 27.0 | E队 | 团队J | 3 | 0 | 3 | 4 | 3_4 |
查看
teamE
,我想考虑 E 队的主场进球、teamD
的主场进球以及 teamC
的客场进球。我创建了 Cluster_pair_key_Organized 列,因为我认为它可以在某种程度上有所帮助。
季节 | 周 | 首页 | 离开 | 首页目标 | 客场进球 | 集群_home | Cluster_away | 集群_对_密钥 | EWM_COLUMN |
---|---|---|---|---|---|---|---|---|---|
2024 | 27.0 | A队 | F队 | 3 | 2 | 4 | 1 | 1_4 | 3 * 0.8 + ... |
2024 | 27.0 | B队 | G队 | 1 | 3 | 2 | 2 | 2_2 | 1 * 0.8 + ... |
2024 | 27.0 | C队 | 团队H | 1 | 0 | 5 | 3 | 3_5 | 0 * 0.8 + ... |
2024 | 27.0 | D队 | 团队我 | 0 | 1 | 3 | 1 | 1_3 | 0 * 0.8 + 0.2 * 0 + ... |
2024 | 27.0 | E队 | 团队J | 3 | 0 | 3 | 4 | 3_4 | 3 * 0.8 + 0.2 *(0 * 0.8 + 0.2 * 0) |
df_ewm = (
df
.select(
Team=pl.concat_list("Home","Away"),
Goals=pl.concat_list("HomeGoals","AwayGoals"),
Cluster=pl.concat_list("Cluster_home","Cluster_away"),
)
.explode(pl.all())
.select(
pl.col.Team,
EWM_COLUMN = pl.col.Goals.ewm_mean(alpha=0.8, adjust=False, min_periods=0).over("Cluster")
)
)
df.join(df_ewm, left_on="Home", right_on="Team")
shape: (5, 9)
┌────────┬─────┬───────┬───────┬───┬───────────┬──────────────┬──────────────┬────────────┐
│ Season ┆ Wk ┆ Home ┆ Away ┆ … ┆ AwayGoals ┆ Cluster_home ┆ Cluster_away ┆ EWM_COLUMN │
│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ str ┆ str ┆ ┆ i64 ┆ i64 ┆ i64 ┆ f64 │
╞════════╪═════╪═══════╪═══════╪═══╪═══════════╪══════════════╪══════════════╪════════════╡
│ 2024 ┆ 27 ┆ teamA ┆ teamF ┆ … ┆ 2 ┆ 4 ┆ 1 ┆ 3.0 │
│ 2024 ┆ 27 ┆ teamB ┆ teamG ┆ … ┆ 3 ┆ 2 ┆ 2 ┆ 1.0 │
│ 2024 ┆ 27 ┆ teamC ┆ teamH ┆ … ┆ 0 ┆ 5 ┆ 3 ┆ 1.0 │
│ 2024 ┆ 27 ┆ teamD ┆ teamI ┆ … ┆ 1 ┆ 3 ┆ 1 ┆ 0.0 │
│ 2024 ┆ 27 ┆ teamE ┆ teamJ ┆ … ┆ 0 ┆ 3 ┆ 4 ┆ 2.4 │
└────────┴─────┴───────┴───────┴───┴───────────┴──────────────┴──────────────┴────────────┘