2017-10-15 9 views
1

큰 데이터 세트를 가져 와서 병합해야합니다. 나는 이와 비슷한 다른 질문을 알고 있지만 내 문제에 대한 답변을 찾을 수 없었다. dask을 사용하면 큰 데이터 세트를 데이터 프레임으로 읽을 수 있었지만 다른 데이터 프레임과 병합 할 수 없었습니다.Python - CSV 파일에서 가져온 Dask 데이터 프레임

import dask.dataframe as dd 
import pandas as pd 

#I have to do this with dask since with pandas I get mem issue and kills the python 
ps = dd.read_csv('*.dsv',sep='|',low_memory=False) 
mx = dd.read_csv('test.csv',sep='|',low_memory=False) 

# this is where I get the error 
mg = pd.merge(ps,mx,left_on='ACTIVITY_ID',right_on='WONUM') 

ValueError: can not merge DataFrame with instance of type <class 'dask.dataframe.core.DataFrame'> 

그것이 팬더 dataframe으로 DASK의 dataframe을 병합 할 수 없습니다하지만이 어떻게 다른 사람을 할 수있는 것은 분명하다? pySpark 또는 다른 방법을 사용할 수 있습니까?

+3

dask에 대해서는 잘 모르지만'pd.merge()'보다는'dd.merge()'가 필요하다고 생각하십니까? – JohnE

답변

3

@ JohnE가 맞습니다 - Dask 데이터 프레임은 merge 메서드를 가지며, 우연히 일치하지는 않습니다. pandas one과 매우 유사합니다. 당신이 내부 병합을 필요로하는 것 때문에 그래서, 당신은 단순히 수행해야합니다

mg = ps.merge(mx,left_on='ACTIVITY_ID',right_on='WONUM') # how='inner' by default, just as in pandas 

DASK from_pandasmethod도 유용 할 수 있습니다, 경우에 당신은 팬더 것들에 DASK의 dataframes을 변환 할.