在dask数据框中创建if-else条件列 [英] Create an if-else condition column in dask dataframe
本文介绍了在dask数据框中创建if-else条件列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要创建一个基于dask数据框上某些条件的列.在熊猫中,这非常简单:
I need to create a column which is based on some condition on dask dataframe. In pandas it is fairly straightforward:
ddf['TEST_VAR'] = ['THIS' if x == 200607 else
'NOT THIS' if x == 200608 else
'THAT' if x == 200609 else 'NONE'
for x in ddf['shop_week'] ]
在黄昏时,我必须做如下相同的事情:
While in dask I have to do same thing like below:
def f(x):
if x == 200607:
y= 'THIS'
elif x == 200608 :
y= 'THAT'
else :
y= 1
return y
ddf1 = ddf.assign(col1 = list(ddf.shop_week.apply(f).compute()))
ddf1.compute()
问题:
- 是否有更好/更直接的方法来实现它?
- 我无法修改第一个数据帧ddf,我需要创建ddf1来确保更改是dask数据帧不可变对象?
推荐答案
答案:
-
您现在正在做什么几乎可以.在您准备好最终答案之前,无需调用
compute
.
# ddf1 = ddf.assign(col1 = list(ddf.shop_week.apply(f).compute()))
ddf1 = ddf.assign(col1 = ddf.shop_week.apply(f))
在某些情况下, dd.Series.where
可能很合适
For some cases dd.Series.where
might be a good fit
ddf1 = ddf.assign(col1 = ddf.shop_week.where(cond=ddf.balance > 0, other=0))
从0.10.2版本开始,您现在可以将列直接插入dask.dataframes
As of version 0.10.2 you can now insert columns directly into dask.dataframes
ddf['col'] = ddf.shop_week.apply(f)
这篇关于在dask数据框中创建if-else条件列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文