阅读量:0
pandas库学习之merge函数
一、简介
pandas.merge
函数用于合并两个DataFrame对象。它根据一个或多个键将两个DataFrame对象连接在一起,类似于SQL中的JOIN
操作。
二、语法和参数
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
参数:
- left:第一个要合并的DataFrame对象。⭐
- right:第二个要合并的DataFrame对象。⭐
- how:字符串,默认值为
inner
,表示连接类型。可选值有left
、right
、outer
和inner
。⭐ - on:列名或列名的列表,表示用于连接的列。必须存在于左右两个DataFrame中。⭐
- left_on:左侧DataFrame中用于连接的列名或索引级别。
- right_on:右侧DataFrame中用于连接的列名或索引级别。
- left_index:布尔值,表示是否使用左侧DataFrame的索引进行连接。
- right_index:布尔值,表示是否使用右侧DataFrame的索引进行连接。
- sort:布尔值,表示是否按连接键对结果进行排序。默认值为False。
- suffixes:字符串元组,表示重复列名的后缀,默认值为(
_x
,_y
)。 - copy:布尔值,默认值为True,表示是否在合并数据时始终复制数据。
- indicator:布尔值或字符串,表示是否添加一列指示每个行的来源。
- validate:字符串,用于验证合并的类型。可选值有
one_to_one
、one_to_many
、many_to_one
和many_to_many
。
三、实例
3.1 内连接
import pandas as pd df1 = pd.DataFrame({ 'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4] }) df2 = pd.DataFrame({ 'key': ['B', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8] }) merged_df = pd.merge(df1, df2, on='key', how='inner') print(merged_df)
输出:
key value1 value2 0 B 2 5 1 D 4 6
3.2 左连接
import pandas as pd df1 = pd.DataFrame({ 'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4] }) df2 = pd.DataFrame({ 'key': ['B', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8] }) merged_df = pd.merge(df1, df2, on='key', how='left') print(merged_df)
输出:
key value1 value2 0 A 1 NaN 1 B 2 5.0 2 C 3 NaN 3 D 4 6.0
3.3 外连接
import pandas as pd df1 = pd.DataFrame({ 'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4] }) df2 = pd.DataFrame({ 'key': ['B', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8] }) merged_df = pd.merge(df1, df2, on='key', how='outer') print(merged_df)
输出
key value1 value2 0 A 1.0 NaN 1 B 2.0 5.0 2 C 3.0 NaN 3 D 4.0 6.0 4 E NaN 7.0 5 F NaN 8.0
四、注意事项
- 确保用于连接的键在两个DataFrame中都存在,否则结果会不如预期。
- 连接类型(如
inner
、outer
、left
、right
)决定了合并结果的形状和内容。选择适当的连接类型非常重要。 - 使用
suffixes
参数可以避免在连接时因列名冲突而导致的问题。 - 如果需要使用索引进行连接,可以将
left_index
和right_index
设置为True。 validate
参数可以用来检查合并的逻辑是否正确,确保数据的一致性。