在dask数据框中创建if-else条件列 [英] Create an if-else condition column in dask dataframe

查看:52
本文介绍了在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()

问题:

  1. 是否有更好/更直接的方法来实现它?
  2. 我无法修改第一个数据帧ddf,我需要创建ddf1来确保更改是dask数据帧不可变对象?

推荐答案

答案:

  1. 您现在正在做什么几乎可以.在您准备好最终答案之前,无需调用 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屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆