如何使用Dask将功能应用于大型数据集的单列?

Amb*_*us9 5 python logarithm dask

如果使用Dask应用功能在大型数据集的单列上计算对数,我该怎么做?

df_train.apply(lambda x: np.log1p(x), axis=1 , meta={'column_name':'float32'}).compute()
Run Code Online (Sandbox Code Playgroud)

数据集非常大(1.25亿行),我该怎么做?

MRo*_*lin 5

您有几个选择:

使用 dask.array 函数

就像 pandas 数据框如何使用 numpy 函数一样

import numpy as np
result = np.log1p(df.x)
Run Code Online (Sandbox Code Playgroud)

Dask 数据帧可以使用 dask 数组函数

import dask.array as da
result = da.log1p(df.x)
Run Code Online (Sandbox Code Playgroud)

地图分区

但对于您的特定函数来说,可能不存在这样的 dask.array 函数。您始终可以使用map_partitions,在构成 dask 数据帧的所有 pandas 数据帧中应用您通常对 pandas 数据帧执行的任何功能

熊猫

result = f(df.x)
Run Code Online (Sandbox Code Playgroud)

Dask 数据框

result = df.x.map_partitions(f)
Run Code Online (Sandbox Code Playgroud)

地图

您始终可以使用maporapply(axis=0)方法,但就像在 Pandas 中一样,这些方法通常对性能非常不利。