在Pandas中结合两个数据框架的操作,通常可以使用merge()函数或者join()函数来进行。下面我将在实例的基础上,详细讲解如何进行这两个函数的操作。
假设我们有两个数据框架df1和df2,它们的数据如下:
import pandas as pd
df1 = pd.DataFrame({'key': ['foo', 'bar', 'baz', 'foo'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['foo', 'bar', 'baz', 'qux'], 'value': [5, 6, 7, 8]})
df1的数据如下:
key | value | |
---|---|---|
0 | foo | 1 |
1 | bar | 2 |
2 | baz | 3 |
3 | foo | 4 |
df2的数据如下:
key | value | |
---|---|---|
0 | foo | 5 |
1 | bar | 6 |
2 | baz | 7 |
3 | qux | 8 |
- merge()函数
merge()函数基于一个或多个键,将两个数据框架沿着这些键连接起来。默认情况下,它执行的是内连接,即只有在两个数据框架中都存在的键才会被保留下来。下面的例子展示了如何使用merge()函数将df1和df2结合:
merged_df = pd.merge(df1, df2, on='key')
print(merged_df)
输出的结果如下:
key | value_x | value_y | |
---|---|---|---|
0 | foo | 1 | 5 |
1 | foo | 4 | 5 |
2 | bar | 2 | 6 |
3 | baz | 3 | 7 |
在这个例子中,我们指定了键‘key’,这样merge()函数就会按照这个键将两个数据框架结合在一起。由于df2中没有'foo','bar'和'baz'以外的键,因此合并后的数据框架缺少一个值。
除了按照一个键进行连接以外,merge()函数还支持按照多个键来进行连接。例如,假设我们需要按照键‘key’和键‘value’来连接数据框架,可以这样写:
merged_df = pd.merge(df1, df2, on=['key', 'value'])
print(merged_df)
输出的结果如下:
key | value | |
---|---|---|
0 | baz | 3 |
在这个例子中,我们指定了两个键'key'和'value',这样merge()函数就会按照这两个键将两个数据框架结合在一起。由于只有df1和df2中都存在键值为'baz'和3的项,因此合并后的数据框架只包含一行。
除了内连接以外,merge()函数还支持多种连接方式,包括左连接、右连接和外连接等。例如,下面的例子展示了如何使用左连接将df1和df2结合在一起:
merged_df = pd.merge(df1, df2, on='key', how='left')
print(merged_df)
输出的结果如下:
key | value_x | value_y | |
---|---|---|---|
0 | foo | 1 | 5 |
1 | bar | 2 | 6 |
2 | baz | 3 | 7 |
3 | foo | 4 | 5 |
在这个例子中,我们指定了连接方式how='left',这样左侧的df1中的所有键都会被保留下来。
- join()函数
join()函数是一种类似于merge()函数的数据框连接方式,但是它是基于索引连接而不是基于键连接。例如,假设我们有两个数据框架df1和df2,它们的索引分别是[0, 1, 2]和[2, 3, 4],它们的数据如下:
df1 = pd.DataFrame({'value': [1, 2, 3]}, index=[0, 1, 2])
df2 = pd.DataFrame({'value': [4, 5, 6]}, index=[2, 3, 4])
df1的数据如下:
value | |
---|---|
0 | 1 |
1 | 2 |
2 | 3 |
df2的数据如下:
value | |
---|---|
2 | 4 |
3 | 5 |
4 | 6 |
我们可以使用join()函数将它们结合在一起,方法如下:
joined_df = df1.join(df2, how='outer')
print(joined_df)
输出的结果如下:
value_x | value_y | |
---|---|---|
0 | 1 | NaN |
1 | 2 | NaN |
2 | 3 | 4 |
3 | NaN | 5 |
4 | NaN | 6 |
在这个例子中,我们使用了join()函数并指定了连接方式how='outer',这样将df1和df2结合在一起,并且保留了索引中所有的值。
除了outer连接以外,join()函数还支持inner连接和left连接等方式,使用方法和merge()函数类似。
总结起来,使用merge()函数或者join()函数可以实现两个数据框架的连接操作,而连接方式有多种,包括内连接、左连接、右连接、外连接、内连接等。根据具体的需求,选择合适的连接方式进行操作即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Python Pandas中结合两个数据框架 - Python技术站