2016-07-27 21 views
7

Dask veri çerçevesi üzerinde bazı koşullara dayalı bir sütun oluşturmanız gerekir. pandalar ise oldukça basittir:dask dataframe içinde bir if-else durum sütunu oluşturun

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() 

Sorular:

  1. için daha iyi/daha kolay bir yolu var mı ben gibi aşağıda aynı şeyi yapmak zorunda

    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'] ] 
    

    DASK iken başarmak?

  2. İlk veri çerçevesini değiştiremiyorum ddf, değişiklik yapmak için ddf1 oluşturmam gerekiyor dask dataframe Immutable object?

cevap

1

sadece kullanabilirsiniz: Sonra

f = lambda x: 'THIS' if x == 200607 else 'NOT THIS' if x == 200608 else 'THAT' if x == 200609 else 'NONE' 

Ve:

ddf1 = ddf.assign(col1 = list(ddf.shop_week.apply(f).compute())) 

Ne yazık ki ikinci soruya bir cevap yok ya da ben bunu anlamıyorum ...

4

Yanıtlar:

  1. Şimdi ne yapıyorsunuz, neredeyse tamam. Son cevabınız için hazır olana kadar compute numaralı telefonu aramanıza gerek yoktur. Bazı durumlarda dd.Series.where için

    # ddf1 = ddf.assign(col1 = list(ddf.shop_week.apply(f).compute())) 
    ddf1 = ddf.assign(col1 = ddf.shop_week.apply(f)) 
    

    doğrudan dask.dataframes içine sürümü artık sütunları ekleyebilirsiniz 0.10.2 itibariyle iyi bir uyum

    ddf1 = ddf.assign(col1 = ddf.shop_week.where(cond=ddf.balance > 0, other=0)) 
    
  2. olabilir

    ddf['col'] = ddf.shop_week.apply(f) 
    
+0

dask dataframes varsayılan olarak değiştirilebilir mi, yoksa sürüm 0.10.2 sürümünde değiştirilebilen sürüm mü? –

+1

Dask'ın en yeni sürümünde, 0.10.2 sürümü, dask.dataframes destek sütunu atama – MRocklin

+0

Yanıt @MRocklin için teşekkürler –

İlgili konular