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 教程列表。