📅  最后修改于: 2023-12-03 14:45:03.092000             🧑  作者: Mango
在 Pandas 中,join 和 merge 都可以用于合并两个或多个数据集,但它们有一些区别。
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 是 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 的合并。