2017-09-12 4 views
1

나는 infs와 nans를 모두 드롭해야하는 dask 시리즈를 가지고있다. .dropna()은 nans 만 삭제합니다. numpy/pandas에서 나는 result = result[np.isfinite(result)]과 같은 것을 할 것입니다. dask-land에서 추천되는 것은 무엇입니까? 부울 배열로 dask 객체를 인덱싱하면 오류가 발생합니다. inf 또는 -inf을 null 값으로 간주해야한다고 dask에 알리는 방법이 있습니까?dask 데이터 프레임/시리즈에서 infs를 어떻게 삭제합니까?

답변

0

NumPy 기능을 사용하지 마십시오. 이것들은 계산을 시작하고 미래의 dask.dataframe 작업은 이러한 결과를 사용하는 것에 대해 주저합니다.

대신 동등한 dask.array 함수를 사용하십시오. 다음은 최소한의 예입니다.

In [1]: import numpy as np 
    ...: import pandas as pd 
    ...: import dask.dataframe as dd 
    ...: import dask.array as da 
    ...: df = pd.DataFrame({'x': [0, 1, 2], 'y': [0, np.inf, 5]}) 
    ...: df 
    ...: 
Out[1]: 
    x   y 
0 0 0.000000 
1 1  inf 
2 2 5.000000 

In [2]: ddf = dd.from_pandas(df, npartitions=2) 
    ...: ddf[~da.isinf(ddf.y)].compute() 
    ...: 
Out[2]: 
    x y 
0 0 0.0 
2 2 5.0 
0

확인, 난 그냥 다음 작업을 수행 할 수 있다는 것을 발견 : 그냥 da. 배열 작업을 사용과 같은 일반적으로

import dask.array as da 
result = result[da.isfinite(result)] 

내가 찾고 있던 누락 된 작품이다.