3.4 Pandas 数据合并和连接:掌握数据整合的核心技巧
在实际的数据分析工作中,数据往往分散在多个数据源中。为了进行全面的分析,我们需要将这些数据合并或连接在一起。Pandas 提供了强大的工具来实现数据的合并和连接操作。本文将详细介绍如何使用 Pandas 进行数据合并和连接,帮助你掌握数据整合的核心技巧。
1. 数据合并(Merge)
merge()
是 Pandas 中最常用的数据合并方法,它类似于 SQL 中的 JOIN 操作。通过指定键(key),可以将两个 DataFrame 按照某种方式合并。
1.1 基本合并
最简单的合并操作是基于一个或多个共同的列(键)将两个 DataFrame 合并。
import pandas as pd
# 创建两个示例 DataFrame
df1 = pd.DataFrame({
'ID': [1, 2, 3],
'Name': ['Alice', 'Bob', 'Charlie']
})
df2 = pd.DataFrame({
'ID': [2, 3, 4],
'Age': [24, 27, 22]
})
# 按照 'ID' 列合并
df_merged = pd.merge(df1, df2, on='ID')
print(df_merged)
输出结果:
ID Name Age
0 2 Bob 24
1 3 Charlie 27
1.2 指定合并方式
merge()
方法支持多种合并方式,通过 how
参数可以指定合并的类型:
inner
:内连接,只保留键匹配的行(默认)。left
:左连接,保留左表的所有行,右表匹配不到的行用 NaN 填充。right
:右连接,保留右表的所有行,左表匹配不到的行用 NaN 填充。outer
:外连接,保留所有行,匹配不到的行用 NaN 填充。
# 左连接
df_left = pd.merge(df1, df2, on='ID', how='left')
print(df_left)
# 外连接
df_outer = pd.merge(df1, df2, on='ID', how='outer')
print(df_outer)
输出结果:
ID Name Age
0 1 Alice NaN
1 2 Bob 24.0
2 3 Charlie 27.0
ID Name Age
0 1 Alice NaN
1 2 Bob 24.0
2 3 Charlie 27.0
3 4 NaN 22.0
1.3 多键合并
如果合并的键不止一个,可以通过 on
参数传递一个列名的列表。
# 创建两个示例 DataFrame
df1 = pd.DataFrame({
'ID': [1, 2, 3],
'Year': [2020, 2021, 2022],
'Value': [100, 200, 300]
})
df2 = pd.DataFrame({
'ID': [2, 3, 4],
'Year': [2021, 2022, 2023],
'Value': [250, 350, 450]
})
# 按照 'ID' 和 'Year' 列合并
df_multi_key = pd.merge(df1, df2, on=['ID', 'Year'])
print(df_multi_key)
输出结果:
ID Year Value_x Value_y
0 2 2021 200 250
1 3 2022 300 350
2. 数据连接(Join)
join()
方法是另一种常用的数据连接方式,它基于索引进行连接,而不是列。join()
是 merge()
的简化版,适用于基于索引的连接操作。
2.1 基本连接
# 创建两个示例 DataFrame
df1 = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [24, 27, 22]
}, index=[1, 2, 3])
df2 = pd.DataFrame({
'City': ['New York', 'Los Angeles', 'Chicago'],
'Salary': [50000, 60000, 70000]
}, index=[2, 3, 4])
# 基于索引连接
df_joined = df1.join(df2)
print(df_joined)
输出结果:
Name Age City Salary
1 Alice 24 NaN NaN
2 Bob 27 New York 50000.0
3 Charlie 22 Los Angeles 60000.0
2.2 指定连接方式
join()
方法也支持 how
参数,可以指定连接方式(left
、right
、inner
、outer
)。
# 外连接
df_outer_joined = df1.join(df2, how='outer')
print(df_outer_joined)
输出结果:
Name Age City Salary
1 Alice 24.0 NaN NaN
2 Bob 27.0 New York 50000.0
3 Charlie 22.0 Los Angeles 60000.0
4 NaN NaN Chicago 70000.0
3. 数据拼接(Concat)
concat()
方法用于沿指定轴(行或列)拼接多个 DataFrame。它适用于简单的数据堆叠操作。
3.1 沿行拼接
# 创建两个示例 DataFrame
df1 = pd.DataFrame({
'A': ['A0', 'A1'],
'B': ['B0', 'B1']
})
df2 = pd.DataFrame({
'A': ['A2', 'A3'],
'B': ['B2', 'B3']
})
# 沿行拼接
df_concat_row = pd.concat([df1, df2], axis=0)
print(df_concat_row)
输出结果:
A B
0 A0 B0
1 A1 B1
0 A2 B2
1 A3 B3
3.2 沿列拼接
# 沿列拼接
df_concat_col = pd.concat([df1, df2], axis=1)
print(df_concat_col)
输出结果:
A B A B
0 A0 B0 A2 B2
1 A1 B1 A3 B3
4. 数据追加(Append)
append()
方法用于将一个 DataFrame 追加到另一个 DataFrame 的末尾。它是 concat()
的简化版,专门用于行方向的拼接。
# 追加数据
df_appended = df1.append(df2)
print(df_appended)
输出结果:
A B
0 A0 B0
1 A1 B1
0 A2 B2
1 A3 B3
5. 总结
通过本文的介绍,你已经掌握了 Pandas 中数据合并、连接、拼接和追加的核心操作。这些技巧将帮助你在实际项目中更高效地整合和分析数据。以下是本文的主要内容回顾:
- 数据合并:使用
merge()
方法实现基于列的合并,支持多种合并方式。 - 数据连接:使用
join()
方法实现基于索引的连接。 - 数据拼接:使用
concat()
方法实现沿行或列的拼接。 - 数据追加:使用
append()
方法实现行方向的追加。
如果你有任何问题或需要进一步的帮助,欢迎在评论区留言!
标签:df,连接,df1,DataFrame,ID,3.4,pd,数据,Pandas From: https://blog.csdn.net/m0_58149406/article/details/145120678