9

我在使用 Dask Dataframes 时遇到的问题很少。

假设我有一个包含 2 列的数据框['a','b']

如果我想要一个新专栏c = a + b

在熊猫我会做:

df['c'] = df['a'] + df['b']

在 dask 我正在执行以下相同的操作:

df = df.assign(c=(df.a + df.b).compute())

是否有可能以更好的方式编写此操作,类似于我们在 pandas 中所做的?

第二个问题更让我困扰。

在 pandas 中,如果我想将'a'第 2 行和第 6 行的值更改为np.pi,我执行以下操作

df.loc[[2,6],'a']  = np.pi

我一直无法弄清楚如何在 Dask 中进行类似的操作。我的逻辑选择了一些行,我只想更改这些行中的值。

4

1 回答 1

8

编辑添加新列

Setitem 语法现在适用于 dask.dataframe

df['z'] = df.x + df.y

旧答案:添加新列

您是正确的, setitem 语法在dask.dataframe.

df['c'] = ... # mutation not supported

正如您建议的那样,您应该改用.assign(...).

df = df.assign(c=df.a + df.b)

在您的示例中,您对.compute(). 通常,一旦获得最终结果,您只想在最后调用计算。

更改行

和以前一样,dask.dataframe不支持就地更改行。就地操作很难在并行代码中进行推理。目前dask.dataframe在这种情况下没有很好的替代操作。我已经提出了问题#653来讨论这个话题。

于 2015-09-02T21:22:24.217 回答