2016-07-27 2 views
7

dask 데이터 프레임의 일부 조건을 기반으로하는 열을 만들어야합니다. 팬더 그것은 매우 간단합니다 :dask 데이터 프레임에 if-else 조건 열을 만듭니다.

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. 가 더 나은/더 간단한 방법이 있나요 내가 아래와 같이 같은 일을해야 할

    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에있는 동안 를 성취하다?

  2. 첫 번째 데이터 프레임 ddf를 수정할 수 없습니다. ddf1을 만들어야 변경 사항을 dask 데이터 프레임으로 변경할 수 있습니까?

답변

1

당신은 사용할 수 있습니다 : 다음

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

과 :

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

불행하게도 내가 두 번째 질문에 대한 답변이 없거나 내가 이해가 안 ...

4

답변 :

  1. 지금하고있는 일은 거의 괜찮습니다. 최종 답을 얻을 때까지 compute 번으로 전화 할 필요가 없습니다. 어떤 경우 dd.Series.where를 들어

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

    직접 dask.dataframes로 버전을 지금 열을 삽입 할 수 있습니다 0.10.2 기준으로 적합

    ddf1 = ddf.assign(col1 = ddf.shop_week.where(cond=ddf.balance > 0, other=0)) 
    
  2. 수 있습니다

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

dask 데이터 프레임은 기본적으로 변경 가능하거나 버전 0.10.2의 출시 후 변경 가능합니까? –

+1

Dask의 최신 버전 인 0.10.2에서 dask.dataframes가 열 지정 – MRocklin

+0

을 지원합니다. @MRocklin 응답 –