Dask Dataframe - 每行中的多行
Dask Dataframe - multiple rows from each row
我有一个包含两列的 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,这很简单。如果您知道另一种 - 可能更简单 - 实现此目的的方法,如果您分享它,我将不胜感激。
您可以通过以下操作将数据框 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 数据框,其中一列包含元组(或数组)。我想要的是有一个新的数据框,每一行中元组的每个元素都有一行。
示例数据框可以这样构造:
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 中复制。