我需要导入大型数据集并合并它们。我知道有其他类似的问题,但我找不到特定于我的问题的答案。看来,使用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'>
很明显,它无法将dask数据帧与pandas数据帧合并,但我怎么能这样做呢?我可以使用pySpark或任何其他方法吗?
答案 0 :(得分: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数据帧转换为pandas数据帧,则Dask from_pandas
method也可能有用。