📜  Pandas 中的 join 和 merge 有什么区别?(1)

📅  最后修改于: 2023-12-03 14:45:03.092000             🧑  作者: Mango

Pandas 中的 join 和 merge 有什么区别?

在 Pandas 中,join 和 merge 都可以用于合并两个或多个数据集,但它们有一些区别。

join

join 是 DataFrame 的一个方法,用于按照索引合并两个 DataFrame,可选参数包括 how、on、left_on、right_on 等。默认的 join 方法是 inner join,即只保留两个 DataFrame 中都存在的行。

import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})

df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [10, 20, 30, 40]})

merged_df = df1.join(df2.set_index('key'), on='key', how='left', lsuffix='_left', rsuffix='_right')

print(merged_df)

输出:

  key  value_left  value_right
0   A           1         NaN
1   B           2        10.0
2   C           3         NaN
3   D           4        20.0
merge

merge 是 pandas 的函数,用于合并两个或多个 DataFrame,可选参数包括 how、on、left_on、right_on、left_index、right_index 等。默认的 merge 方法是 inner join,即只保留两个 DataFrame 中都存在的行。

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': [10, 20, 30, 40]})

merged_df = pd.merge(df1, df2, on='key', how='left')

print(merged_df)

输出:

  key  value1  value2
0   A       1     NaN
1   B       2    10.0
2   C       3     NaN
3   D       4    20.0

与 join 不同,merge 方法不依赖于 index,可以合并没有相同列名的 DataFrame。另外,merge 方法还可以指定合并键不止一个的情况,这时需要传递一个列表作为 on 参数。

总的来说,join 是在 DataFrame 的方法,可以更方便地处理按照索引合并的情况,merge 是 pandas 的函数,更加通用,可以更灵活地处理两个或多个 DataFrame 的合并。