Dask Dataframe - 每行多行

时间:2018-06-08 19:09:15

标签: python pandas dataframe dask

我有这个dask数据框有两列,其中一列包含元组(或数组)。我想要的是有一个新的数据帧,每行的元组的每个元素都有一行。

可以像这样构建示例数据框:

import pandas as pd
import dask.dataframe as dd
tmp = pd.DataFrame({'name': range(10), 'content': [range(i) for i in range(10)]})
ddf = dd.from_pandas(tmp, npartitions=1)

形状如下:

ddf:   name    content
       0       ()
       1       (0)
       2       (0, 1)
       3       (0, 1, 2)
       ...

我的目标是拥有如下内容:

ddf:   name    element
       1       0
       2       0
       2       1
       3       0
       3       1
       3       2
       ...

提前感谢您的帮助。

实际上,我的最终目标是计算'element'中的出现次数,如果我可以到达我展示的最后一个df,这是直截了当的。如果您知道另一种 - 可能更容易实现这一目标,如果您分享它,我将非常感激。

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式转换所需形状的数据框tmp

tmp_2 = (tmp.set_index('name')['content']
            .apply(pd.Series).stack().astype(int)
             .reset_index().drop('level_1',1).rename(columns={0:'content'}))

然后以相同的方式创建你的ddf。

如你在评论中所说的那样,你可能无法在dask中复制。