Pandas 合并两个Data Frames(在一个共同列上进行连接)
在本文中,我们将介绍如何用Pandas合并两个Data Frames。合并Data Frames是数据分析的常见任务,它可以将来自多个来源的数据结合在一起以便更好地分析。在Pandas中,我们可以使用merge()函数或join()方法来实现这一目的。下面将介绍两种方法的具体用法。
阅读更多:Pandas 教程
merge()函数
merge()函数是Pandas中基于列的合并方法之一。它接受两个Data Frames作为输入,并将它们按照一列或多列来进行连接。例如,假设我们有两个Data Frames,一个包含销售数据,一个包含产品数据。我们可以使用merge()函数将它们连接在一起,在销售数据和产品数据之间建立一个链接。
下面是使用merge()函数合并两个Data Frames的示例代码:
import pandas as pd
# 创建销售数据
sales_data = {
'product_id': ['1001', '1002', '1003', '1004', '1005'],
'date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'],
'sales': [100, 200, 300, 400, 500],
}
sales_df = pd.DataFrame(sales_data)
# 创建产品数据
product_data = {
'product_id': ['1001', '1002', '1003', '1004', '1005'],
'product_name': ['A', 'B', 'C', 'D', 'E'],
'product_type': ['Type1', 'Type2', 'Type3', 'Type4', 'Type5'],
}
product_df = pd.DataFrame(product_data)
# 使用merge()函数合并销售数据和产品数据
merged_df = pd.merge(sales_df, product_df, on='product_id')
print(merged_df)
输出结果如下:
product_id date sales product_name product_type
0 1001 2020-01-01 100 A Type1
1 1002 2020-01-02 200 B Type2
2 1003 2020-01-03 300 C Type3
3 1004 2020-01-04 400 D Type4
4 1005 2020-01-05 500 E Type5
上面的代码中,我们首先创建了两个Data Frames(sales_df和product_df),然后使用merge()函数将它们连接在一起,连接列是product_id列。merge()函数根据连接列的值将两个Data Frames中的行进行匹配,然后将它们合并到一起。合并后的Data Frame包含了销售数据和产品数据,并且在每一行中包含了销售数据和产品数据的所有列。
join()方法
join()方法是另一种用于连接两个Data Frames的方法。join()方法是基于索引的连接方法,它使用一个Data Frame的索引作为连接条件,并将另一个Data Frame的行添加到该Data Frame中。例如,假设我们有两个Data Frames,一个包含学生的信息,一个包含课程的信息。我们可以使用join()方法将他们连接在一起,以创建一个包含学生和课程信息的Data Frame。
下面是使用join()方法合并两个Data Frames的示例代码:
import pandas as pd
# 创建学生数据
student_data = {
'student_id': ['1', '2', '3', '4', '5'],
'student_name': ['A', 'B', 'C', 'D', 'E'],
'age': [20, 21, 22, 23, 24],
}
student_df = pd.DataFrame(student_data)
student_df.set_index('student_id', inplace=True)
# 创建课程数据
course_data = {
'student_id': ['1', '2', '3', '4', '5'],
'course_name': ['Math', 'English', 'Science', 'History', 'Geography'],
'score': [90, 80, 95, 75, 85],
}
course_df = pd.DataFrame(course_data)
course_df.set_index('student_id', inplace=True)
# 使用join()方法合并学生数据和课程数据
joined_df = student_df.join(course_df)
print(joined_df)
输出结果如下:
student_name age course_name score
student_id
1 A 20 Math 90
2 B 21 English 80
3 C 22 Science 95
4 D 23 History 75
5 E 24 Geography 85
上面的代码中,我们首先创建了两个Data Frames(student_df和course_df),然后使用join()方法将它们连接在一起。join()方法使用student_df的索引作为连接条件,并将course_df中的行添加到student_df中。合并后的Data Frame包含了学生数据和课程数据,并且在每一行中包含了学生数据和课程数据的所有列。
总结
本文介绍了两种在Pandas中合并两个Data Frames的方法:merge()函数和join()方法。这些方法都可以帮助我们将来自多个来源的数据结合在一起以便更好地分析。无论是使用merge()函数还是join()方法,我们都应该选择适当的连接条件,并确保它们能够正确地匹配两个Data Frames中的行。
极客教程