pandas.DataFrame.explode#

DataFrame.explode(column, ignore_index=False)[源代码]#

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

0.25.0 新版功能.

参数
columnIndexLabel

要分解的列。对于多个列,指定一个非空列表,每个元素都是字符串或元组,并且所有指定列的列表形式的数据在框架的同一行上必须具有匹配的长度。

1.3.0 新版功能: 多柱分解

ignore_index布尔值,默认为False

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

1.1.0 新版功能.

退货
DataFrame

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

加薪
ValueError
  • 如果框架的列不是唯一的。

  • 如果指定要分解的列为空列表。

  • 如果要分解的指定列与框架中的行式元素计数不匹配。

参见

DataFrame.unstack

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

DataFrame.melt

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

Series.explode

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

注意事项

这个例程将像列表一样爆炸,包括列表、元组、集合、系列和np.ndarray。子集行的结果数据类型将为Object。标量将原封不动地返回,而空的List-Like将导致该行的np.nan。此外,分解集合时,输出中行的顺序将是不确定的。

参考文献 the user guide 查看更多示例。

示例

>>> 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