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

Sam*_*Sam 9 pandas dask

我对Dask Dataframes的问题很少.

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

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

在熊猫我会做:

df['c'] = df['a'] + df['b']
Run Code Online (Sandbox Code Playgroud)

在dask中,我正在执行如下操作:

df = df.assign(c=(df.a + df.b).compute())
Run Code Online (Sandbox Code Playgroud)

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

第二个问题是让我更烦恼的问题.

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

df.loc[[2,6],'a']  = np.pi
Run Code Online (Sandbox Code Playgroud)

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

MRo*_*lin 8

编辑添加新列

Setitem语法现在可以在dask.dataframe中使用

df['z'] = df.x + df.y
Run Code Online (Sandbox Code Playgroud)

旧答案:添加新列

你是正确的,setitem语法不起作用dask.dataframe.

df['c'] = ... # mutation not supported
Run Code Online (Sandbox Code Playgroud)

正如你的建议你应该改用.assign(...).

df = df.assign(c=df.a + df.b)
Run Code Online (Sandbox Code Playgroud)

在您的示例中,您有一个不必要的电话.compute().通常,只有在获得最终结果后,才想在最后调用计算.

改变行

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