如何汇总极坐标数据框的所有列

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

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?
python python-polars
2个回答
2
投票

您可以使用

map_batches

pdf.select(pl.all().map_batches(my_func))

有关更多详细信息,请参阅用户指南中的用户定义函数部分。


2
投票

当 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
都是代码异味,应该避免,除非无法以不同的方式完成。

背景

计算极坐标中任何内容的惯用方法是使用表达式。由于多种原因,它们应该成为首选:

  • 它们平行运行
  • 它们可以优化
  • 它们是用 Rust 编译的

Python 函数对于极坐标是不透明的。它无法优化,因为我们不知道它做了什么,也不知道输出是什么。

OP描述了它想要运行任意函数。这包含在表达式中。任何表达式都可以采用

map_batches
map_elements
并接受 python 函数作为逃生舱口。因此,回答如何在所有列上运行表达式是回答如何在所有列上运行 python 函数的超集。

© www.soinside.com 2019 - 2024. All rights reserved.