对表达式函数使用列表理解

问题描述 投票:0回答:1

假设我想制作一个函数列表,即

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 作为参数,这就像我的备份计划,所以我希望得到类似于上面的东西。

python list-comprehension python-polars
1个回答
7
投票

这对你有用吗?

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     │
└─────┴─────┴───────┴───────┴────────┴───────┴───────┘
© www.soinside.com 2019 - 2024. All rights reserved.