pandas.DataFrame.explode#
- DataFrame.explode(column, ignore_index=False)[源代码][源代码]#
将类似列表的每个元素转换为一行,复制索引值。
- 参数:
- 列IndexLabel
要展开的列。对于多列,指定一个非空列表,每个元素为字符串或元组,并且所有指定的列在同一行的列表数据必须具有匹配的长度。
Added in version 1.3.0: 多列爆炸
- ignore_indexbool, 默认 False
如果为真,生成的索引将被标记为 0, 1, …, n - 1。
- 返回:
- DataFrame
将展开的列表转换为子集列的行;这些行的索引将被重复。
- 引发:
- 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