如何在 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 对象的新行。
广告