📌  相关文章
📜  将单元格中的逗号分隔文本与其他列中的数据一起转换为行 (1)

📅  最后修改于: 2023-12-03 15:39:15.631000             🧑  作者: Mango

将单元格中的逗号分隔文本与其他列中的数据一起转换为行

当我们需要处理包含多个值的列时,常常会用逗号作为分隔符,将多个值存储在同一单元格中。但是,这样会给数据分析和处理带来不便,因为我们需要将这些值拆分成单独的行,以便进行分析。在本文中,我们将介绍如何使用Python将包含逗号分隔文本的单元格与其他列中的数据一起转换为单独的行。

数据准备

我们假设我们有以下数据集:

| Name | Values | | ------- | -----------------------| | John Doe | Apple, Banana, Orange | | Jane Doe | Mango, Pineapple | | Bob Smith | Watermelon |

其中,"Name"和"Values"是两个列名,每行数据都包含一个名字和多个值,这些值用逗号隔开。我们的目标是将每个值与其对应的名字组合成一行,形成以下数据集:

| Name | Value | | ------- | -----------| | John Doe | Apple | | John Doe | Banana | | John Doe | Orange | | Jane Doe | Mango | | Jane Doe | Pineapple | | Bob Smith | Watermelon |

我们将使用Python将原始数据转换成目标数据。

代码实现

我们首先需要导入必要的库,并读取原始数据文件:

import pandas as pd

data = pd.read_csv("data.csv")

接下来,我们定义一个函数,将逗号分隔的文本拆分成一个列表,并将姓名和每个值合并成一个序列。该函数将逐行应用于数据集中的每个单元格。

def split_cell(row):
    name = row["Name"]
    values = row["Values"].split(",")
    return [[name, value.strip()] for value in values]

我们将该函数应用于数据,将数据集拆分成单独的行。

splitted_data = data.apply(split_cell, axis=1)
flattened_data = [row for sublist in splitted_data for row in sublist]
result = pd.DataFrame(flattened_data, columns=["Name", "Value"])

最后,我们将结果保存到新的CSV文件中。

result.to_csv("new_data.csv", index=False)
总结

本文介绍了如何使用Python将包含逗号分隔文本的单元格与其他列中的数据一起转换为单独的行。我们首先将逗号分隔的文本拆分成一个列表,然后将姓名和每个值合并成一个序列,并将其转换为新的数据集。通过这种方法,我们可以更轻松地处理和分析包含多个值的列。