Pandas 如何在series中拆分(展开)一行

Pandas 如何在series中拆分(展开)一行

如果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嵌套列表创建了一个系列对象,然后应用了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被转换为结果序列对象的新行。此外,在索引位置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

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 精选笔记