dask.dataframe.DataFrame.explode

dask.dataframe.DataFrame.explode

DataFrame.explode(column)[源代码]

将类似列表的每个元素转换为一行,复制索引值。

此文档字符串是从 pandas.core.frame.DataFrame.explode 复制而来的。

Dask 版本可能存在一些不一致性。

参数
索引标签

要展开的列。对于多列,指定一个非空列表,每个元素为字符串或元组,并且所有指定的列在框架的同一行上的类似列表的数据必须具有匹配的长度。

1.3.0 新版功能: 多列展开

忽略索引bool, 默认 False (Dask 中不支持)

如果为真,生成的索引将被标记为 0, 1, …, n - 1。

返回
DataFrame

将展开的列表转换为子集列的行;这些行的索引将被重复。

Raises
ValueError
  • 如果框架的列不唯一。

  • 如果指定的展开列为空列表。

  • 如果在数据框中按行展开的指定列没有匹配的元素数量。

参见

DataFrame.unstack

旋转(必须是层次结构的)索引标签的一个层级。

DataFrame.melt

将 DataFrame 从宽格式透视为长格式。

Series.explode

将 DataFrame 从列表类列展开为长格式。

注释

此例程将展开包括列表、元组、集合、Series 和 np.ndarray 在内的类列表对象。子集行的结果 dtype 将是对象。标量将保持不变,空列表类对象将导致该行为 np.nan。此外,当展开集合时,输出行顺序将是不确定的。

参考 用户指南 获取更多示例。

示例

>>> df = pd.DataFrame({'A': [[0, 1, 2], 'foo', [], [3, 4]],  
...                    'B': 1,
...                    'C': [['a', 'b', 'c'], np.nan, [], ['d', 'e']]})
>>> df  
           A  B          C
0  [0, 1, 2]  1  [a, b, c]
1        foo  1        NaN
2         []  1         []
3     [3, 4]  1     [d, e]

单列爆炸。

>>> df.explode('A')  
     A  B          C
0    0  1  [a, b, c]
0    1  1  [a, b, c]
0    2  1  [a, b, c]
1  foo  1        NaN
2  NaN  1         []
3    3  1     [d, e]
3    4  1     [d, e]

多列爆炸。

>>> df.explode(list('AC'))  
     A  B    C
0    0  1    a
0    1  1    b
0    2  1    c
1  foo  1  NaN
2  NaN  1  NaN
3    3  1    d
3    4  1    e