Python Dask数据帧-每行中有多行
我有一个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:
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如何工作的一个好方法:)