2017-11-03 4 views
0
import pandas as pd 
import dask.dataframe as dd 

a = pd.DataFrame({'A':[100,102,101,99],'B':[1789,1890,1700,1980]}) 
b = pd.DataFrame({'A':[100,102,104,105],'B':[1230,1890,1700,1980]}) 

da = dd.from_pandas(a, npartitions=2) 
db = dd.from_pandas(b, npartitions=2) 

da = da.categorize() 

내 질문 한 DASK DataFrame에서 기존 범주를 적용이다 나는에 da의 범주를 적용 어떻게 db 같은 db DataFrame는 범주이며, 또 다른 문제는 값 A:[100,102,nan,nan]B:[nan,1890,1700,1980]DASK DataFrame

을 가지고 위의 작동 후 범주 값을 코드로 대체하려면 어떻게합니까?

이것은 훈련 및 테스트를 위해 이미 분할 된 데이터에 중요합니다. 친절하게 도와주세요.

답변

1

팬더 0.21.0 (최근에 출시 됨)을 사용하고 github에서 master를 제거하는 것이 가장 깨끗합니다. 이렇게하면 dask에서 최근에 개선 된 내용을 사용할 수 있습니다. CategoricalDtype :

In [1]: %paste 
import pandas as pd 
import dask.dataframe as dd 

a = pd.DataFrame({'A':[100,102,101,99],'B':[1789,1890,1700,1980]}) 
b = pd.DataFrame({'A':[100,102,104,105],'B':[1230,1890,1700,1980]}) 

da = dd.from_pandas(a, npartitions=2) 
db = dd.from_pandas(b, npartitions=2) 
## -- End pasted text -- 

In [2]: da2 = da.categorize(columns=['A', 'B']) 

In [3]: db2 = db.astype({'A': da2.A.dtype, 'B': da2.B.dtype}) 

In [4]: db2 
Out[4]: 
Dask DataFrame Structure: 
          A    B 
npartitions=2 
0    category[known] category[known] 
2       ...    ... 
3       ...    ... 
Dask Name: astype, 4 tasks 

In [5]: db2.compute() 
Out[5]: 
     A  B 
0 100.0  NaN 
1 102.0 1890.0 
2 NaN 1700.0 
3 NaN 1980.0