如何在 Pandas Series 中展开(explode)一行?


如果 Series 对象中的一些元素包含列表,则可以将这些列表元素展开到 Series 对象的多行中。展开就是将列表转换成多行。

因此,可以使用 Pandas Series 的 `explode()` 方法轻松完成此转换。此方法用于将 Series 对象的列表型元素转换为行,并且这些行的索引将被复制。

此方法唯一的参数是 `ignore_index`,它接受布尔值,默认为 False,True 表示生成的索引将从 0 到 n-1 标记。

示例 1

在下面的示例中,我们将看到 `series.explode()` 方法如何将 Series 对象的列表型元素转换为行。

# importing pandas package
import pandas as pd

# create a nested list
L = [1, 2, [4, 8, 9, 2], [], ["a", "b", "c"]]

# Create a pandas series using the list
series = pd.Series(L)

# unnest the series using explode() method
result = series.explode()

print("Original Series:")
print(series)

print("Result:", result)

解释

这里我们创建了一个带有 Python 嵌套列表的 Series 对象,然后应用了 `explode()` 方法。

输出

输出如下:

Original Series:
0              1
1              2
2    [4, 8, 9, 2]
3              []
4       [a, b, c]
dtype: object

Result:
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 被转换成了结果 Series 对象的新行。此外,在索引位置 3 处有一个空的列表型元素,结果行在该位置 3 将具有 np.nan。

示例 2

在下面的示例中,我们将看到 `series.explode()` 方法如何将 Series 中类似列表、元组的对象元素转换为行。

# importing pandas package
import pandas as pd

# Create a pandas series
series = pd.Series([(0, 1, 2,), list("xyz"), (5, 6, 7)])

# unnest the series using explode() method
result = series.explode()

print("Original Series:")
print(series)

print("Result:", result)

解释

最初,我们创建了一个包含 3 个元素(元组、列表)的 Python 列表的 Series 对象,然后应用了 `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

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

更新于:2022年3月7日

1K+ 浏览量

启动你的职业生涯

完成课程获得认证

开始学习
广告