假设我想制作一个函数列表,即
aggs=['sum','std','mean','min','max']
那么如果我有一个任意的 df
df=pl.DataFrame({'a':[1,2,3], 'b':[2,3,4]})
我希望能够做类似的事情(这显然行不通)
df.with_columns([pl.col('a').x() for x in aggs])
有办法做到这一点吗?
aggs
不必是字符串列表,而只是出于此问题的目的键入我的意图的最简单方法。 此外,它还需要有空间容纳.name.suffix()
我知道我可以有一个函数,它包含函数中的所有 aggs 并接受任意 dfs 作为参数,这就像我的备份计划,所以我希望得到类似于上面的东西。
这对你有用吗?
df.with_columns([getattr(pl.col("a"), x)().name.suffix("_" + x) for x in aggs])
shape: (3, 7)
┌─────┬─────┬───────┬───────┬────────┬───────┬───────┐
│ a ┆ b ┆ a_sum ┆ a_std ┆ a_mean ┆ a_min ┆ a_max │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ f64 ┆ f64 ┆ i64 ┆ i64 │
╞═════╪═════╪═══════╪═══════╪════════╪═══════╪═══════╡
│ 1 ┆ 2 ┆ 6 ┆ 1.0 ┆ 2.0 ┆ 1 ┆ 3 │
│ 2 ┆ 3 ┆ 6 ┆ 1.0 ┆ 2.0 ┆ 1 ┆ 3 │
│ 3 ┆ 4 ┆ 6 ┆ 1.0 ┆ 2.0 ┆ 1 ┆ 3 │
└─────┴─────┴───────┴───────┴────────┴───────┴───────┘