首页 > 解决方案 > SQL 风格在 Dask Series 或 DataFrame 列上展开

问题描述

我有一个 Dask 系列,其中包含一个带有值列表的列。我想执行一个 SQL 风格的分解来为每个索引值和相应的列表元素创建一个新行。对于这个特定问题,列表的长度都相同。

单行示例:

索引          
123 [value1, value2, value3]

期望的转变:

索引          
123 value1
123 value2
123 value3

任何有关如何实现这一目标的建议将不胜感激。

标签: pythondataframeexplodeseriesdask

解决方案


在熊猫数据框上,这看起来像

df.column.apply(pd.Series, 1).stack().reset_index(level=1, drop=True)

要对 Dask 数据框执行此操作,您需要使用map_partitions对数据的每个分区执行完全相同的操作:

def func(df):
    return df.column.apply(pd.Series, 1).stack().reset_index(level=1, drop=True)
df.map_partitions(func)

推荐阅读