Pandas 数据合并
最后修改于 2025 年 2 月 25 日
Pandas 是一个强大的 Python 数据操作库。在处理多个数据集时,合并 DataFrame 是一项常见任务。本教程将通过实际示例介绍如何使用 Pandas 合并 DataFrame。
合并允许根据共同的列或索引将来自不同来源的数据组合起来。Pandas 提供了 merge
和 join
等方法来执行这些操作。
内连接
本示例展示了如何使用 merge
执行内连接。
import pandas as pd df1 = pd.DataFrame({ 'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'] }) df2 = pd.DataFrame({ 'ID': [2, 3, 4], 'City': ['New York', 'Los Angeles', 'Chicago'] }) merged_df = pd.merge(df1, df2, on='ID', how='inner') print(merged_df)
merge(df1, df2, on='ID', how='inner')
在 'ID' 列上执行内连接。仅包含两个 DataFrame 中 ID 匹配的行。
左连接
本示例演示了如何使用 merge
执行左连接。
import pandas as pd df1 = pd.DataFrame({ 'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'] }) df2 = pd.DataFrame({ 'ID': [2, 3, 4], 'City': ['New York', 'Los Angeles', 'Chicago'] }) merged_df = pd.merge(df1, df2, on='ID', how='left') print(merged_df)
merge(df1, df2, on='ID', how='left')
执行左连接。包含 df1
中的所有行,并添加 df2
中匹配的行。
右连接
本示例展示了如何使用 merge
执行右连接。
import pandas as pd df1 = pd.DataFrame({ 'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'] }) df2 = pd.DataFrame({ 'ID': [2, 3, 4], 'City': ['New York', 'Los Angeles', 'Chicago'] }) merged_df = pd.merge(df1, df2, on='ID', how='right') print(merged_df)
merge(df1, df2, on='ID', how='right')
执行右连接。包含 df2
中的所有行,并添加 df1
中匹配的行。
外连接
本示例演示了如何使用 merge
执行外连接。
import pandas as pd df1 = pd.DataFrame({ 'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'] }) df2 = pd.DataFrame({ 'ID': [2, 3, 4], 'City': ['New York', 'Los Angeles', 'Chicago'] }) merged_df = pd.merge(df1, df2, on='ID', how='outer') print(merged_df)
merge(df1, df2, on='ID', how='outer')
执行外连接。包含两个 DataFrame 中的所有行,并将缺失值填充为 NaN。
基于多列进行合并
本示例展示了如何基于多列合并 DataFrame。
import pandas as pd df1 = pd.DataFrame({ 'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'], 'Dept': ['HR', 'IT', 'Finance'] }) df2 = pd.DataFrame({ 'ID': [2, 3, 4], 'Name': ['Bob', 'Charlie', 'David'], 'City': ['New York', 'Los Angeles', 'Chicago'] }) merged_df = pd.merge(df1, df2, on=['ID', 'Name'], how='inner') print(merged_df)
merge(df1, df2, on=['ID', 'Name'], how='inner')
会同时基于 'ID' 和 'Name' 列进行合并。这对于更复杂的连接很有用。
合并具有不同列名的 DataFrame
本示例演示了如何合并具有不同列名的 DataFrame。
import pandas as pd df1 = pd.DataFrame({ 'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'] }) df2 = pd.DataFrame({ 'EmpID': [2, 3, 4], 'City': ['New York', 'Los Angeles', 'Chicago'] }) merged_df = pd.merge(df1, df2, left_on='ID', right_on='EmpID', how='inner') print(merged_df)
merge(df1, df2, left_on='ID', right_on='EmpID', how='inner')
使用不同的列名合并 DataFrame。当列名不匹配时,这很有用。
连接 DataFrame
本示例展示了如何使用 concat
连接 DataFrame。
import pandas as pd df1 = pd.DataFrame({ 'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'] }) df2 = pd.DataFrame({ 'ID': [4, 5, 6], 'Name': ['David', 'Eve', 'Frank'] }) concatenated_df = pd.concat([df1, df2], ignore_index=True) print(concatenated_df)
concat([df1, df2], ignore_index=True)
会垂直连接 DataFrame。ignore_index=True
参数会重置索引。
数据合并最佳实践
- 理解数据:在合并前分析数据集,以识别共同的键。
- 选择正确的连接方式:根据需求使用内连接、左连接、右连接或外连接。
- 处理重复项:检查并处理重复键,以避免意外结果。
- 验证结果:验证合并数据的准确性和完整性。
来源
在本文中,我们探讨了如何在 Pandas 中合并 DataFrame。
作者
所有 Pandas 教程列表。