Pandas合并_merge

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值