我对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中进行类似的操作.我的逻辑选择了一些行,我只想更改那些行中的值.
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的问题.
| 归档时间: |
|
| 查看次数: |
2959 次 |
| 最近记录: |