pandas.DataFrame.explode #

数据框。爆炸(, ignore_index = False ) [来源] #

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

参数
列索引标签

要爆炸的列。对于多列,指定一个非空列表,其中每个元素为 str 或 tuple,并且所有指定的列在帧的同一行上的类似列表的数据必须具有匹配的长度。

1.3.0版本新增:多列爆炸

ignore_index bool,默认 False

如果为 True,则结果索引将标记为 0、1、...、n - 1。

返回
数据框

将列表分解为子集列的行;这些行的索引将被重复。

加薪
值错误
  • 如果框架的列不唯一。

  • 如果指定的要爆炸的列是空列表。

  • 如果要分解的指定列在框架中按行排列的元素数量不匹配。

也可以看看

DataFrame.unstack

透视索引标签的一个级别(必须是分层的)。

DataFrame.melt

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

Series.explode

将 DataFrame 从类似列表的列分解为长格式。

笔记

此例程将分解类似列表的内容,包括列表、元组、集合、系列和 np.ndarray。子集行的结果数据类型将为对象。标量将按原样返回,空列表将导致该行生成 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