如何更改dask数据框中的行和列?

时间:2015-09-02 21:06:56

标签: pandas dask

我对Dask Dataframes的问题很少。

假设我有一个包含2列c = a + b

的数据框

如果我想要一个新列df['c'] = df['a'] + df['b']

在pandas中我会这样做:

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

在dask中,我的操作如下:

'a'

是否可以更好地编写此操作,类似于我们在pandas中的操作?

第二个问题令我感到不安。

在pandas中,如果我想更改第2行和第2行np.pi的值6到df.loc[[2,6],'a'] = np.pi ,我执行以下操作

{{1}}

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

1 个答案:

答案 0 :(得分: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在这种情况下没有很好的替代操作。我已经就此主题提出了issue #653的讨论。