如何在Polars中基于列条件筛选计算累积和并生成EWM_COLUMN
问题:基于Polars DataFrame计算集群内球队的EWM均值
我有一个Polars DataFrame,想要获取集群内球队的最新进球数来应用ewm_mean(),最终生成示例中的EWM_COLUMN列。
示例数据代码
import polars as pl pl.Config(tbl_cols=9) df = pl.read_csv(b""" Season,Wk,Home,Away,HomeGoals,AwayGoals,Cluster_home,Cluster_away,Cluster_pair_key 2024,27.0,teamA,teamF,3,2,4,1,1_4 2024,27.0,teamB,teamG,1,3,2,2,2_2 2024,27.0,teamC,teamH,1,0,5,3,3_5 2024,27.0,teamD,teamI,0,1,3,1,1_3 2024,27.0,teamE,teamJ,3,0,3,4,3_4 """)
原始表格
┌────────┬──────┬───────┬───────┬───────────┬───────────┬──────────────┬──────────────┬──────────────────┐ │ Season ┆ Wk ┆ Home ┆ Away ┆ HomeGoals ┆ AwayGoals ┆ Cluster_home ┆ Cluster_away ┆ Cluster_pair_key │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ f64 ┆ str ┆ str ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ str │ ╞════════╪══════╪═══════╪═══════╪═══════════╪═══════════╪══════════════╪══════════════╪══════════════════╡ │ 2024 ┆ 27.0 ┆ teamA ┆ teamF ┆ 3 ┆ 2 ┆ 4 ┆ 1 ┆ 1_4 │ │ 2024 ┆ 27.0 ┆ teamB ┆ teamG ┆ 1 ┆ 3 ┆ 2 ┆ 2 ┆ 2_2 │ │ 2024 ┆ 27.0 ┆ teamC ┆ teamH ┆ 1 ┆ 0 ┆ 5 ┆ 3 ┆ 3_5 │ │ 2024 ┆ 27.0 ┆ teamD ┆ teamI ┆ 0 ┆ 1 ┆ 3 ┆ 1 ┆ 1_3 │ │ 2024 ┆ 27.0 ┆ teamE ┆ teamJ ┆ 3 ┆ 0 ┆ 3 ┆ 4 ┆ 3_4 │ └────────┴──────┴───────┴───────┴───────────┴───────────┴──────────────┴──────────────┴──────────────────┘
需求说明
以teamE为例,计算其EWM_COLUMN时需要纳入以下进球数:
- teamE的
HomeGoals - teamD的
HomeGoals - teamC的
AwayGoals
我已经创建了Cluster_pair_key_Organized列来辅助实现需求,最终希望生成如下表格中的EWM_COLUMN:
目标表格
| Season | Wk | Home | Away | HomeGoals | AwayGoals | Cluster_home | Cluster_away | Cluster_pair_key | EWM_COLUMN |
|---|---|---|---|---|---|---|---|---|---|
| 2024 | 27.0 | teamA | teamF | 3 | 2 | 4 | 1 | 1_4 | 3 * 0.8 + ... |
| 2024 | 27.0 | teamB | teamG | 1 | 3 | 2 | 2 | 2_2 | 1 * 0.8 + ... |
| 2024 | 27.0 | teamC | teamH | 1 | 0 | 5 | 3 | 3_5 | 0 * 0.8 + ... |
| 2024 | 27.0 | teamD | teamI | 0 | 1 | 3 | 1 | 1_3 | 0 * 0.8 + 0.2 * 0 + ... |
| 2024 | 27.0 | teamE | teamJ | 3 | 0 | 3 | 4 | 3_4 | 3 * 0.8 + 0.2 * (0 * 0.8 + 0.2 * 0) |
内容的提问来源于stack exchange,提问作者Pedro_Siqueira
相关产品推荐
相关产品推荐

