2
join
을 적용하면 예기치 않은 결과가 발생하여 .from_delayed 메소드에서 생성 된 데이터 프레임을 마스킹합니다. 다음 세 가지 부분으로 구성된 예제를 통해이를 증명하고 싶습니다.dask 데이터 프레임의 .join 결과가 방법에 의존하는 것처럼 보입니다. dask 데이터 프레임이 생성되었습니다.
compute
방법 dataframes을 판다 양쪽 dataframes를 변환]from_delayed
방법을 통해 DASK dataframe를 생성from_pandas
- 통해 생성 된 DASK dataframe 함께 조인. (1)에서와 같이 참여했습니다.
from_delayed
메서드를 통해 생성 된 dask 데이터 프레임을compute
을 사용하는 팬더로 변환합니다. Aferwards는from_pandas
을 사용하여 다시 그것을 dask로 변환합니다. 그런 다음 (1)과 같이 참여하십시오.import dask.dataframe import pandas as pd # functions for generating a dask dataframe def get_pdf(character): '''constructs a pandas dataframe with indexes [character]1, ..., [character]5''' index = [character + str(i) for i in range(5)] return pd.DataFrame({'A':[1,2,3,4,5]}, index = index) def get_ddf(): '''constructs dask dataframe out of pandas dataframes via the .from-delayed method with indexes A1, A2, A3, ... F3, F3, F4''' delayed_list = [dask.delayed(get_pdf)(x) for x in 'ABCDEF'] return dask.dataframe.from_delayed(delayed_list) #generate dask dataframes, that will be joined ddf1 = get_ddf() ddf2 = dask.dataframe.from_pandas(pd.DataFrame({'B': [1,2,3]}, index = ['A0', 'B1', 'C3']), npartitions = 2) #recreate ddf1 by converting it to a pandas dataframe and afterwards to a dask dataframe ddf1_from_pandas = dask.dataframe.from_pandas(ddf1.compute(), npartitions = 3) #compute joins dask_from_delayed_join = ddf1.join(ddf2, how = 'inner') pandas_join = ddf1.compute().join(ddf2.compute(), how = 'inner') dask_from_pandas_join = ddf1_from_pandas.join(ddf2, how = 'inner')
내가 동일하게 세 가지 결과 (
dask_from_delayed_join
,pandas_join
,dask_from_pandas_join
을) 기대 :
는 다음과 같은 코드를 생각해 보자.
그러나, 첫 번째 결과는 다른 다릅니다
print(dask_from_delayed_join.compute())
:
Empty DataFrame
Columns: [A, B]
Index: []
print(pandas_join)
:
A B
A0 1 1
B1 2 2
C3 4 3
print(dask_from_pandas_join.compute())
:
A B
A0 1 1
B1 2 2
C3 4 3
무슨 일 이니?
나는 이것을 지금보고 있습니다. 희망은 하루나 셋 이내에 대답을 가지고. – MRocklin