Python Dask - 2个DataFrame的垂直连接

ede*_*esz 6 concat dataframe python-2.7 dask

我在Python中有以下Dask DataFrame:

d = [
    ['A','B','C','D','E','F'],
    [1, 4, 8, 1, 3, 5],
    [6, 6, 2, 2, 0, 0],
    [9, 4, 5, 0, 6, 35],
    [0, 1, 7, 10, 9, 4],
    [0, 7, 2, 6, 1, 2]
    ]
df = pd.DataFrame(d[1:], columns=d[0])
ddf = dd.from_pandas(df, npartitions=5)
Run Code Online (Sandbox Code Playgroud)

我试图垂直连接2 Dask 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
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Dask DataFrame Structure:
                   A      B      C      D      E      F
npartitions=4                                          
0              int64  int64  int64  int64  int64  int64
1                ...    ...    ...    ...    ...    ...
2                ...    ...    ...    ...    ...    ...
3                ...    ...    ...    ...    ...    ...
4                ...    ...    ...    ...    ...    ...
Dask Name: from_pandas, 4 tasks
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试:

ddf_i = ddf + 11.5
dd.concat([ddf,ddf_i],axis=0)
Run Code Online (Sandbox Code Playgroud)

然后它似乎工作.将此设置为True(在性能 - 速度方面)是否存在问题?或者有另一种方法来垂直连接Dask DataFrames吗?

mdu*_*ant 3

如果您检查 dataframe 的划分ddf.divisions,您会发现,假设有一个分区,它具有索引的边缘:(0, 4)。这对于 dask 很有用,因为它知道您何时对数据进行某些操作,而不是使用不包含所需索引值的分区。这也是为什么当索引适合作业时,某些 dask 操作会快得多。

连接时,第二个数据帧具有与第一个数据帧相同的索引。如果索引值在两个分区中具有不同的范围,则串联将无需交错即可工作。