如何使用 Python Pandas 根据公共键合并多个 TSV 文件?


如果您处理数据,您可能不得不处理将多个文件合并到一个连贯的数据集中这一挑战。如果您正在处理制表符分隔值 (TSV) 文件,此任务可能会特别困难。幸运的是,Python Pandas 库提供了一种简单的解决方案,可以根据公共键合并 TSV 文件。

在本文中,我们将学习如何使用 Python Pandas 合并多个 TSV 文件。首先,我们将首先了解什么是 TSV 文件以及它们与 CSV 文件有何不同。接下来,我们将了解 Pandas 库并解释其处理 TSV 文件的功能。最后,我们将逐步介绍如何使用 Pandas 根据公共键合并多个 TSV 文件。

什么是 TSV 文件?

TSV 文件是一种分隔文本文件,它使用制表符作为值之间的分隔符。此格式类似于逗号分隔值 (CSV) 文件,后者使用逗号作为分隔符。TSV 文件通常用于表示包含逗号的数据,例如包含逗号的地址或名称。通过使用制表符而不是逗号,TSV 文件可以避免数据中出现逗号可能导致的混淆。

Pandas 提供了广泛的功能来操作和分析数据,包括用于读取和写入 TSV 文件的功能。

使用 Pandas 根据公共键合并不同 TSV 文件的步骤

现在我们已经介绍了 TSV 文件和 Pandas,让我们深入了解根据公共键合并多个 TSV 文件的过程。在本文中,我们假设您有几个以 .tsv 结尾的 TSV 文件(例如 youdatafile.tsv 等),您希望使用 Python pandas 将它们合并到一个连贯的数据集中。

让我们看看使用 Pandas 根据公共键合并不同 TSV 文件的步骤

步骤 1:将不同的 TSV 文件加载到 Pandas DataFrame 中

我们合并文件的第一个步骤是将每个 TSV 文件加载到 Pandas DataFrame 中。我们可以使用 Pandas read_csv() 函数来做到这一点,该函数可以读取 TSV 文件以及 CSV 文件。

现在假设我们有三个要合并的 TSV 文件:persons.tsv、orderdetails.tsv 和 productdetails.tsv。每个文件包含我们数据的不同方面

  • persons.tsv 包含有关我们人员的信息,例如他们的姓名、电子邮件地址和电话号码

  • orderdetails.tsv 包含有关我们人员下达的订单详细信息的信息,例如订单日期和总成本

  • productdetails.tsv 包含有关我们销售的产品详细信息的信息,例如产品名称和价格

现在我们将每个文件加载到 Pandas DataFrame 中。为此,我们将使用以下代码

import pandas as pd
persons = pd.read_csv('persons.tsv', sep='\t')
orderdetails = pd.read_csv('orderdetails.tsv', sep='\t')
productdetails = pd.read_csv('productdetails.tsv', sep='\t')

步骤 2:检查 DataFrame

将每个 TSV 文件加载到单独的 Pandas DataFrame 之后的下一步是检查每个 DataFrame 以确保数据已正确加载。为此,我们将使用 head() 函数,该函数用于显示 DataFrame 的前几行。

print(persons.head())
print(orderdetails.head())
print(productdetails.head())

以上代码将在控制台中显示每个 DataFrame 的前五行。我们可以使用此信息来验证数据是否已正确加载,并了解每个 DataFrame 包含的内容。

步骤 3:合并 DataFrame

现在我们已将每个 TSV 文件加载到单独的 Pandas DataFrame 中,我们可以将数据合并到一个连贯的数据集中。为此,我们将使用 Pandas 提供的 merge() 函数。

merge() 函数根据公共键将两个 DataFrame 合并到一个 DataFrame 中。在我们的例子中,公共键是客户 ID。我们将首先将 persons DataFrame 与 orderdetails DataFrame 合并,然后将结果 DataFrame 与 productdetails DataFrame 合并。

# Merge persons and orderdetails
customer_orderdetails = pd.merge(persons, orderdetails, on='customer_id')

# Merge customer_orderdetails and productdetails
merged_data = pd.merge(customer_orderdetails, productdetails, on='product_id')

merge() 函数以两个 DataFrame 作为输入,以及一个指定用于合并的公共键的参数。在我们的例子中,公共键是 persons DataFrame 和 orderdetails DataFrame 中的 customer_id 列,以及 customer_orderdetails DataFrame 和 productdetails DataFrame 中的 product_id 列。

生成的 merged_data DataFrame 包含来自原始 TSV 文件的所有信息,合并到一个连贯的数据集中。

步骤 4:保存文件

最后,我们可以使用 Pandas 提供的 to_csv() 函数将合并后的数据保存到 TSV 文件中。

merged_data.to_csv('merged_data.tsv', sep='\t', index=False)

示例

让我们考虑以下示例。我们有三个 TSV 文件,“mydata1.tsv”、“mydata2.tsv”和“mydata3.tsv”。每个文件包含相同的列:id、name 和 contact。

在下面的示例中,我们使用了 concat() 函数,该函数以 DataFrame 列表作为输入并将它们组合到一个 DataFrame 中。默认情况下,concat() 垂直组合 DataFrame,这意味着它将它们一个接一个地堆叠起来。在此示例中,由于三个 TSV 文件具有相同的列,因此生成的合并 DataFrame 也将具有相同的列。

import pandas as pd
# Load different TSV files into DataFrames
mydf1 = pd.read_csv('mydata1.tsv', sep='\t')
mydf2 = pd.read_csv('mydata2.tsv', sep='\t')
mydf3 = pd.read_csv('mydata3.tsv', sep='\t')

# Merge DataFrames using concat()
mymerged_data = pd.concat([mydf1, mydf2, mydf3])

# Save merged data to TSV file
mymerged_data.to_csv('merged_data.tsv', sep='\t', index=False)

输出

Name    Age    City
John    25     London
Emily   32     New York
David   41     Paris
Sophie  29     Berlin
Michael 37     Sydney
Emma    31     Toronto

示例

让我们考虑以下示例。我们有两个 TSV 文件,myproductdetails.tsv 和 mysales.tsv。myproductdetails.tsv 文件包含有关 productdetails 的信息,而 mysales.tsv 文件包含有关销售交易的信息。这两个文件都包含一个 product_id 列,我们将使用它作为合并文件的公共键。

import pandas as pd

# Load TSV files into DataFrames
myproductdetailsdf = pd.read_csv('myproductdetails.tsv', sep='\t')
mysalesdf = pd.read_csv('mysales.tsv', sep='\t')

# Merge DataFrames using merge()
mymerged_data = pd.merge(myproductdetailsdf, mysalesdf, on='product_id')

# Save merged data to TSV file
mymerged_data.to_csv('mymerged_data.tsv', sep='\t', index=False)

输出

Name    Age    City
John    25     London
Emily   32     New York
David   41     Paris
Sophie  29     Berlin
Michael 37     Sydney
Emma    31     Toronto

在上面的示例中,我们使用了 merge() 函数,该函数以两个 DataFrame 作为输入,以及一个指定用于合并的公共键的参数。在此示例中,我们根据 product_id 列合并 myproductdetailsdf 和 mysalesdf DataFrame。生成的合并 DataFrame 将包含来自这两个 DataFrame 的所有列,行根据公共键匹配。

结论

在本文中,我们学习了如何使用 Python Pandas 根据公共键合并多个 TSV 文件,通过分步教程了解如何使用 Pandas 根据公共键合并多个 TSV 文件。

更新于:2023 年 8 月 31 日

546 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告