Python Dask数据帧-每行中有多行

Python Dask数据帧-每行中有多行,python,pandas,dataframe,dask,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:

我有一个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
       ...
它的形状是这样的:

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
       ...
我的目标是拥有这样的东西:

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,这是直接的。如果您知道另一种可能更简单的方法来实现这一点,我将非常感谢您分享它。

您可以通过执行以下操作将数据帧
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中,正如您在评论中所说,您可能可以在dask中复制。

我不熟悉
dask
,但您想在创建ddf之前(在
tmp
)还是之后(在
ddf
)更改数据?之后,但如果您对如何在pandas中进行更改有任何想法,有可能我可以用daskYep复制这个过程,它完成了工作。我使用了
dask.DataFrame.map\u分区
。我将在问题中添加工作代码。我非常感谢您的帮助,非常感谢。@Michelelambertocci很高兴它有帮助,我很好奇您是如何使用它的,这是了解dask如何工作的一个好方法:)