Используйте понимание списка для функций-выражений

Допустим, я хочу составить список функций, т.е. 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 не обязательно должен быть список строк, а просто самый простой способ напечатать мое намерение для целей этого вопроса. Кроме того, в нем должно быть место для .suffix()

Я знаю, что у меня может быть функция, которая имеет все аггинги в функции и принимает произвольные dfs в качестве параметра, что похоже на мой план резервного копирования, поэтому я надеюсь на что-то похожее на вышеизложенное.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Будет ли это работать для вас?

df.with_columns([getattr(pl.col("a"), x)().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     │
└─────┴─────┴───────┴───────┴────────┴───────┴───────┘

Другие вопросы по теме