2017-05-05 2 views
3

I가 다음 DASK DataFrame의 수직 연결 : 나는 수직으로 2 DASK의 DataFrames 연결하는 시도하고파이썬 DASK - 2 DataFrames 파이썬에서

  A   B  C  D  E  F 
0   1   4  8  1  3  5 
1   6   6  2  2  0  0 
2   9   4  5  0  6  35 
3   0   1  7  10  9  4 
4   0   7  2  6  1  2 

:

ddf_i = ddf + 11.5 
dd.concat([ddf,ddf_i],axis=0) 

을하지만이 오류가 발생합니다 : 그러나

Traceback (most recent call last): 
     ... 
     File "...", line 572, in concat 
     raise ValueError('All inputs have known divisions which cannot ' 
    ValueError: All inputs have known divisions which cannot be concatenated in order. Specify interleave_partitions=True to ignore order 

, 내가하려고하면 :

dd.concat([ddf,ddf_i],axis=0,interleave_partitions=True) 

그러면 작동하는 것 같습니다. 이 값을 True (성능면에서)으로 설정하는 데 문제가 있습니까? 아니면 Dask DataFrames를 수직으로 연결하는 또 다른 방법이 있습니까?

답변

4

데이터 프레임 ddf.divisions의 구분을 검사하면 인덱스의 가장자리가 (1, 4) 인 파티션이 하나 있다고 가정합니다. 이것은 필요한 인덱스 값을 포함하지 않는 파티션을 사용하지 않고 데이터를 조작 할 때를 알고 있으므로 dask를 지정하는 데 유용합니다. 인덱스가 작업에 적합한 경우 일부 dask 작업이 훨씬 빨라지는 이유이기도합니다.

연결할 때 두 번째 데이터 프레임은 첫 번째 데이터 프레임과 동일한 인덱스를 갖습니다. 인덱스의 값이 두 파티션에서 다른 범위를 갖는 경우, 인터 리빙없이 연결이 작동합니다.

+0

메모리를 통해 모두 전달하지 않고도 pd.dataframes의 dask.series를 하나의 dask 데이터 프레임으로 연결하고 pandas를 연결하는 방법에 대한 몇 가지 예를 제공해 주실 수 있습니까? – thebeancounter

+0

@mdurant - 비슷한 문제가 있습니다. 이 상황을 관리해야하는 이유가 무엇인지 확실하지 않습니다. 어쩌면'concat' 문제를 사용하고 나서'reset_index()'다음에'drop_duplicate()'를 실행할 수 있습니다. 어쨌든 그것은 나에게 어색한 해결책이 될 수 있습니다. 색인 내에없는 행을 연결할 수 있어야합니다. 나는 [이 해결책] (https://stackoverflow.com/questions/27097492/identify-records-not-in-another-dataframe)을 시도했지만'dask.dataframe'에는 유효하지 않습니다. 나는 또한 성공없이'append' 메소드를 사용하여 시도했다. –