在Pandas中把列表式的列元素转换成独立的行

  • Post category:Python

在Pandas中,可以通过explode函数将列表式的列元素转换成独立的行。下面将详细讲解这个过程。

  1. 创建包含列表元素的DataFrame

首先,我们需要创建一个DataFrame,并将其中一个列的元素设置为列表类型。具体代码如下所示:

import pandas as pd

data = {
    'A': [1, 2, 3],
    'B': [[4, 5], [6], [7, 8, 9]]
}

df = pd.DataFrame(data)
print(df)

输出结果为:

   A          B
0  1     [4, 5]
1  2        [6]
2  3  [7, 8, 9]

其中,列”A”的元素类型为int,列”B”的元素类型为list。

  1. 使用explode函数转换列元素

接下来,我们使用explode函数将列”B”中的列表元素转换成独立的行。具体代码如下所示:

df = df.explode('B')
print(df)

输出结果为:

   A  B
0  1  4
0  1  5
1  2  6
2  3  7
2  3  8
2  3  9

可以看到,原先的每个列表元素都被转换成了独立的行,而与之对应的列”A”的元素被复制了多次。

  1. 重新设置索引

最后,我们可以重新设置索引,使其从0开始连续递增。具体代码如下所示:

df = df.reset_index(drop=True)
print(df)

输出结果为:

   A  B
0  1  4
1  1  5
2  2  6
3  3  7
4  3  8
5  3  9

现在,我们就成功地将列表式的列元素转换成了独立的行。

在实际应用中,这种转换方法会经常被用到,特别是在数据清洗和结构重组时。