修改(例如,执行数学函数)Dask DataFrame 中的列的最佳方法是什么?

What is the the best way to modify (e.g., perform math functions) a column in a Dask DataFrame?

我是 Pandas DataFrame objects 的老手,但我正在努力寻找一种干净、方便的方法来更改 Dask DataFrame 列中的值。对于一个特定的例子,我试图将 numpy.float 列中的正值乘以 -1,从而使它们变为负值。这是我当前的方法(我正在尝试更改 DataFrame 中的最后一列):

cols = df.columns
df[[cols[-1]]] = df[[cols[-1]]]*-1

这似乎仅在列具有字符串 header 时才有效,否则它会使用索引号作为新列的 string-type 列名称添加另一列。是否有类似于 df.iloc[-1,:] = df.iloc[-1,:]*-1 的 Pandas 方法的方法,我可以将其与 Dask 数据框一起使用?

编辑:我也在尝试实现:df = df.applymap(lambda x: x*-1)。当然,这会将函数应用于整个数据框,但是有没有办法只在一列上应用函数?谢谢。

第一题

如果某些东西适用于字符串列而不适用于 numeric-named 列,那么这可能是一个错误。我建议在 https://github.com/dask/dask/issues/new

提出问题

第二题

but is there a way to apply a function over just one column?

您不能将单个 Python 函数应用于直接存储在许多片段中的 dask 数据帧,但是 .map_partitions.reduction 之类的方法可能会帮助您实现有点聪明,结果相同。

以后我们建议在堆栈溢出时单独提出单独的问题