这里记录一下​​pandas.merge()​​函数的用法。

  1. 使用​​DataFrame​​​一和二中的共有参数将两个​​DataFrame​​融合起来。
import pandas as pd

df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
result = pd.merge(df1, df2, on='key')
print(result)
"""
result:
key A B C D
0 K0 A0 B0 C0 D0
1 K1 A1 B1 C1 D1
2 K2 A2 B2 C2 D2
3 K3 A3 B3 C3 D3
"""

上述表示使用共有​​key​​​参数将​​df1​​​与​​df2​​融合起来。

  1. 使用​​key1​​​与​​key2​​​参数中共有的对应参数将​​df1​​​与​​df2​​合并起来
import pandas as pd

df1 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})

df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})

result = pd.merge(df1, df2, on=['key1', 'key2'])
print(result)
"""
result:
key1 key2 A B C D
0 K0 K0 A0 B0 C0 D0
1 K1 K0 A2 B2 C1 D1
2 K1 K0 A2 B2 C2 D2
"""

我们可以看到,在​​df1​​​中存在​​[K0, K0]​​​的对应关系,并且​​df2​​​中也存在。此外,​​df1​​​中​​[K1, K0]​​​的对应关系,​​df2​​​中存在两个​​[K1,K0]​​​的对应关系,因此我们最终会得到三行数据。并且,如果我们不设置​​on​​​参数,程序默认会使用​​df1​​​与​​df2​​​中共有的列对象,即这里的​​key1​​​与​​key2​​​参数。如果这里我们不设置​​on​​参数。得到的结果与上述结果是一致的。

代码如下:

import pandas as pd

df1 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})

df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})

result = pd.merge(df1, df2)
print(result)
"""
result:
key1 key2 A B C D
0 K0 K0 A0 B0 C0 D0
1 K1 K0 A2 B2 C1 D1
2 K1 K0 A2 B2 C2 D2
"""
  1. 使用​​outer​​​参数将​​df1​​​与​​df2​​合并起来。
import pandas as pd

df1 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})

df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})

result = pd.merge(df1, df2, how='outer', on=['key1', 'key2'])
print(result)
"""
result:
key1 key2 A B C D
0 K0 K0 A0 B0 C0 D0
1 K0 K1 A1 B1 NaN NaN
2 K1 K0 A2 B2 C1 D1
3 K1 K0 A2 B2 C2 D2
4 K2 K1 A3 B3 NaN NaN
5 K2 K0 NaN NaN C3 D3
"""

​outer​​​参数类似于求并集,如果在一个​​DateFrame​​​中不存在与另一个​​DataFrame​​​匹配的元素,那么用​​NaN​​进行填充。上述结果一目了然中。这里不做过多的解释,大家如果有疑问,欢迎留言。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~