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

Dea*_*gor 2 python list-comprehension python-polars

假设我想制作一个函数列表,即aggs=['sum','std','mean','min','max']

那么如果我有一个任意的 df

df=pl.DataFrame({'a':[1,2,3], 'b':[2,3,4]})
Run Code Online (Sandbox Code Playgroud)

我希望能够做类似的事情(这显然行不通)

df.with_columns([pl.col('a').x() for x in aggs])
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点? aggs不需要是字符串列表,而只是为了这个问题的目的而键入我的意图的最简单方法。此外,它还需要有空间.suffix()

我知道我可以有一个函数,该函数包含函数中的所有 aggs 并接受任意 dfs 作为参数,这就像我的备份计划,所以我希望得到类似于上面的东西。

ΩΠΟ*_*ΝΟΣ 6

这对你有用吗?

\n
df.with_columns([getattr(pl.col("a"), x)().suffix("_" + x) for x in aggs])\n
Run Code Online (Sandbox Code Playgroud)\n
shape: (3, 7)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 a   \xe2\x94\x86 b   \xe2\x94\x86 a_sum \xe2\x94\x86 a_std \xe2\x94\x86 a_mean \xe2\x94\x86 a_min \xe2\x94\x86 a_max \xe2\x94\x82\n\xe2\x94\x82 --- \xe2\x94\x86 --- \xe2\x94\x86 ---   \xe2\x94\x86 ---   \xe2\x94\x86 ---    \xe2\x94\x86 ---   \xe2\x94\x86 ---   \xe2\x94\x82\n\xe2\x94\x82 i64 \xe2\x94\x86 i64 \xe2\x94\x86 i64   \xe2\x94\x86 f64   \xe2\x94\x86 f64    \xe2\x94\x86 i64   \xe2\x94\x86 i64   \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 1   \xe2\x94\x86 2   \xe2\x94\x86 6     \xe2\x94\x86 1.0   \xe2\x94\x86 2.0    \xe2\x94\x86 1     \xe2\x94\x86 3     \xe2\x94\x82\n\xe2\x94\x82 2   \xe2\x94\x86 3   \xe2\x94\x86 6     \xe2\x94\x86 1.0   \xe2\x94\x86 2.0    \xe2\x94\x86 1     \xe2\x94\x86 3     \xe2\x94\x82\n\xe2\x94\x82 3   \xe2\x94\x86 4   \xe2\x94\x86 6     \xe2\x94\x86 1.0   \xe2\x94\x86 2.0    \xe2\x94\x86 1     \xe2\x94\x86 3     \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n