import pandas as pd
import numpy as np
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
print(left)
print()
print(right)
print()
res = pd.merge(left, right, on='key')
print(res)
print()
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2':['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K3'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
print(left)
print()
print(right)
print()
#how是left、right 、inner、outer
res = pd.merge(left, right, on=['key1', 'key2'], how='outer',) # how默认是inner
print(res)
print()
res = pd.merge(left, right, on=['key1', 'key2'], how='inner',) # how默认是inner
print(res)
print()
res = pd.merge(left, right, on=['key1', 'key2'], how='left',) # how默认是inner
print(res)
print()
# indicator显示merge的信息
res = pd.merge(left, right, on=['key1', 'key2'], how='outer', indicator=True)
print(res)
print()
# indicator可以改名字
res = pd.merge(left, right, on=['key1', 'key2'], how='outer', indicator='indicator_merge')
print(res)
print()
boy = pd.DataFrame({'k': ['k0', 'k1', 'k2'], 'age': [1, 2, 3]})
girls = pd.DataFrame({'k': ['k0', 'k0', 'k3'], 'age': [4, 5, 6]})
print(boy)
print()
print(girls)
print()
res = pd.merge(boy, girls, on='k', suffixes=['_boy', '_girls'], how='outer')
print(res)
key A B
0 K0 A0 B0
1 K1 A1 B1
2 K2 A2 B2
3 K3 A3 B3
key C D
0 K0 C0 D0
1 K1 C1 D1
2 K2 C2 D2
3 K3 C3 D3
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
key1 key2 A B
0 K0 K0 A0 B0
1 K0 K1 A1 B1
2 K1 K0 A2 B2
3 K2 K1 A3 B3
key1 key2 C D
0 K0 K0 C0 D0
1 K1 K0 C1 D1
2 K1 K0 C2 D2
3 K3 K0 C3 D3
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 K3 K0 NaN NaN C3 D3
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
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
key1 key2 A B C D _merge
0 K0 K0 A0 B0 C0 D0 both
1 K0 K1 A1 B1 NaN NaN left_only
2 K1 K0 A2 B2 C1 D1 both
3 K1 K0 A2 B2 C2 D2 both
4 K2 K1 A3 B3 NaN NaN left_only
5 K3 K0 NaN NaN C3 D3 right_only
key1 key2 A B C D indicator_merge
0 K0 K0 A0 B0 C0 D0 both
1 K0 K1 A1 B1 NaN NaN left_only
2 K1 K0 A2 B2 C1 D1 both
3 K1 K0 A2 B2 C2 D2 both
4 K2 K1 A3 B3 NaN NaN left_only
5 K3 K0 NaN NaN C3 D3 right_only
k age
0 k0 1
1 k1 2
2 k2 3
k age
0 k0 4
1 k0 5
2 k3 6
k age_boy age_girls
0 k0 1.0 4.0
1 k0 1.0 5.0
2 k1 2.0 NaN
3 k2 3.0 NaN
4 k3 NaN 6.0