How do I change rows and columns in a dask dataframe?

蓝咒 提交于 2019-11-28 07:39:58

问题


There are few issues I am having with Dask Dataframes.

lets say I have a dataframe with 2 columns ['a','b']

if i want a new column c = a + b

in pandas i would do :

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

In dask I am doing the same operation as follows:

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

is it possible to write this operation in a better way, similar to what we do in pandas?

Second question is something which is troubling me more.

In pandas if i want to change the value of 'a' for row 2 & 6 to np.pi , I do the following

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

I have not been able to figure out how to do a similar operation in Dask. My logic selects some rows and I only want to change values in those rows.


回答1:


Edit Add New Columns

Setitem syntax now works in dask.dataframe

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

Old answer: Add new columns

You're correct that the setitem syntax doesn't work in dask.dataframe.

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

As you suggest you should instead use .assign(...).

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

In your example you have an unnecessary call to .compute(). Generally you want to call compute only at the very end, once you have your final result.

Change rows

As before, dask.dataframe does not support changing rows in place. Inplace operations are difficult to reason about in parallel codes. At the moment dask.dataframe has no nice alternative operation in this case. I've raised issue #653 for conversation on this topic.



来源:https://stackoverflow.com/questions/32363114/how-do-i-change-rows-and-columns-in-a-dask-dataframe

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!