📜  将 pd 数据框中的列表拆分为行 (1)

📅  最后修改于: 2023-12-03 14:53:44.680000             🧑  作者: Mango

将 pd 数据框中的列表拆分为行

在进行数据分析和处理中,经常会遇到需要将列表拆分为行的情况。这种情况经常出现在数据框中的某一列中包含了多个值,而我们希望每个值都显示在独立的行中。这样可以更方便地进行数据处理和分析。

方法一:使用 Pandas 的 explode 函数

Pandas 是一个强大的数据处理库,其中的 explode 函数可以实现将列表拆分为行的功能。以下是示例代码:

import pandas as pd

# 创建包含列表的数据框
df = pd.DataFrame({'col1': [['A', 'B'], ['C', 'D', 'E'], ['F']], 'col2': [1, 2, 3]})

# 使用 explode 函数将列表拆分为行
df_exploded = df.explode('col1')

# 打印拆分后的结果
print(df_exploded)

输出结果如下:

  col1  col2
0    A     1
0    B     1
1    C     2
1    D     2
1    E     2
2    F     3

在上面的代码中,我们创建了一个包含列表的数据框 df,其中的列 col1 包含了多个值。使用 explode 函数后,col1 的每个元素都被展开为单独的行,并在原数据框的其他列保持不变。

方法二:使用 apply 函数自定义拆分函数

除了使用 Pandas 的 explode 函数,我们还可以利用 apply 函数和自定义的拆分函数来实现相同的功能。以下是示例代码:

import pandas as pd

# 自定义拆分函数
def explode_list(row):
    """
    将列表拆分为行
    """
    return pd.Series(row['col1'])

# 创建包含列表的数据框
df = pd.DataFrame({'col1': [['A', 'B'], ['C', 'D', 'E'], ['F']], 'col2': [1, 2, 3]})

# 使用 apply 函数应用自定义的拆分函数
df_exploded = df.apply(explode_list, axis=1).merge(df[['col2']], left_index=True, right_index=True)

# 打印拆分后的结果
print(df_exploded)

输出结果和前面的方法一相同。

在上面的代码中,我们定义了一个自定义的拆分函数 explode_list,该函数将列表拆分为行。然后使用 apply 函数将该函数应用到数据框的每一行,并通过合并操作将拆分后的结果与原数据框的其他列合并起来。

使用这两种方法之一,我们可以将数据框中的列表拆分为行,便于进一步的数据处理和分析。