如何解除 Pandas Series 中的一行嵌套(即展开一行)?
pandasserver side programmingprogramming更新于 2025/7/11 0:07:17
如果 Series 对象中的某些元素包含列表,我们可以将这些列表元素解除嵌套,将其拆分成 Series 对象的多行。解除嵌套其实就是将列表拆分成多行。
因此,借助 Pandas 的 series.explode() 方法,可以轻松完成此转换。此方法用于将系列对象中列表形式的元素转换为行,并且这些行的索引将被复制。
ignore_index 是此方法的唯一参数,它接受布尔值,False 为默认值,True 表示生成的索引将被标记为从 0 到 n - 1。
示例 1
在下面的示例中,我们将看到 series.explode() 方法如何将系列对象中列表形式的元素转换为行。
# 导入 pandas 包
import pandas as pd
# 创建嵌套列表
L = [1, 2, [4, 8, 9, 2], [], ["a", "b", "c"]]
# 使用列表
series = pd.Series(L)
# 使用explode()方法解除series的嵌套
result = series.explode()
print("原始series:")
print(series)
print("结果:", result)
解释
这里我们创建了一个带有python嵌套列表的series对象,然后应用了explode()方法。
输出
输出概要 −
原始series: 0 1 1 2 2 [4, 8, 9, 2] 3 [] 4 [a, b, c] dtype: object 结果: 0 1 1 2 2 4 2 8 2 9 2 2 3 Nan 4 a 4 b 4 c dtype: object
在上面的输出块中,我们可以注意到元素 4、8、9、2 被转换为结果序列对象的新行。此外,索引位置 3 处有一个空的列表类元素,结果行将具有该位置 3 的 np.nan。
示例 2
在下面的示例中,我们将看到 series.explode() 方法如何将系列的列表、元组对象等元素转换为行。
# 导入 pandas 包
import pandas as pd
# 创建一个 pandas 系列
series = pd.Series([(0, 1, 2,), list("xyz"), (5, 6, 7)])
# 使用explode()方法解除系列的嵌套
result = series.explode()
print("Original Series:")
print(series)
print("Result:",result)
解释
首先,我们创建了一个包含 3 个元素的 Python 列表(元组、列表)的系列对象,然后应用了explode()方法。
输出
输出如下所示 −
Original Series: 0 (0, 1, 2) 1 [x, y, z] 2 (5, 6, 7) dtype: object Result: 0 0 0 1 0 2 1 x 1 y 1 z 2 5 2 6 2 7 dtype: object
在上面的输出块中,我们可以注意到系列对象的元素已成功转换为结果系列对象的新行。

