Pandas 使用
df.apply(my_func, axis=0)
可以轻松地用任意函数总结数据框的列。
我怎样才能在极地做同样的事情? 下图所示为 MWE。 我有一个可以应用于整个列的函数(只是一个例子,我想对任意函数执行此操作)。 该函数使用我展示的语法总结 pandas 中的列。
在极坐标中执行相同操作的语法是什么?
import polars as pl
import pandas as pd
import numpy as np
# Toy Data
data = {'a':[1, 2, 3, 4, 5],
'b': [2, 4, 6, 8, 10]}
# Pandas and polars copy
df = pd.DataFrame(data)
pdf = pl.DataFrame(data)
# Function I want to use to summarize my columns
my_func = lambda x: np.log(x.mean())
# How to do this in pandas
df.apply(my_func, axis=0)
# How do I do the same in polars?
当 Polars 中有可以实现你的目标的表达式时,你真的不应该使用 Python 函数。
data = {'a':[1, 2, 3, 4, 5],
'b': [2, 4, 6, 8, 10]}
df = pl.DataFrame(data)
df.select(
pl.all().mean().log()
)
每个
map_batches
或 map_elements
都是代码异味,应该避免,除非无法以不同的方式完成。
计算极坐标中任何内容的惯用方法是使用表达式。由于多种原因,它们应该成为首选:
Python 函数对于极坐标是不透明的。它无法优化,因为我们不知道它做了什么,也不知道输出是什么。
OP描述了它想要运行任意函数。这包含在表达式中。任何表达式都可以采用
map_batches
或 map_elements
并接受 python 函数作为逃生舱口。因此,回答如何在所有列上运行表达式是回答如何在所有列上运行 python 函数的超集。