如何解除 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

在上面的输出块中,我们可以注意到系列对象的元素已成功转换为结果系列对象的新行。


相关文章