我对Dask Dataframes的问题很少。
假设我有一个包含2列c = a + b
如果我想要一个新列df['c'] = df['a'] + df['b']
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中执行类似的操作。我的逻辑选择了一些行,我只想更改那些行中的值。
答案 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的讨论。