Python3 - Pandas DataFrames - Merging, Joining, Concatenating

import pandas as pd

df1 = pd.DataFrame({'A': ['A0','A1','A2','A3'],
                    'B': ['B0','B1','B2','B3'],
                    'C': ['C0','C1','C2','C3'],
                    'D': ['D0','D1','D2','D3']},
                   index = [0,1,2,3])

df2 = pd.DataFrame({'A': ['A4','A5','A6','A7'],
                    'B': ['B4','B5','B6','B7'],
                    'C': ['C4','C5','C6','C7'],
                    'D': ['D4','D5','D6','D7']},
                   index = [4,5,6,7])

df3 = pd.DataFrame({'A': ['A8','A9','A10','A11'],
                    'B': ['B8','B9','B10','B11'],
                    'C': ['C8','C9','C10','C11'],
                    'D': ['D8','D9','D10','D11']},
                   index = [8,9,10,11])

print("*** df1 ***")
print(df1)
print('\n')
print("*** df2 ***")
print(df2)
print('\n')
print("*** df3 ***")
print(df3)
print('\n')

print("**** Concatenatiion *****")
# Concatenation basically glues together DataFrames.
# Keep in mind that dimensions should match along the axis you are concatenating on.
print(pd.concat([df1,df2,df3]))
print('\n')
print(pd.concat([df1,df2,df3],axis=1))
print('\n')

print("***** 另外一个DataFrames *****")
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('\n')
print(right)
print('\n')

print("***** Merging *****")
# The merge function allows you to merge DataFrames together using a similar logic as merging SQL Tables together.
print('inner result:')
print(pd.merge(left,right,how='inner',on='key')) # use intersection of keys from both frames, similar SQL inner join
print('\n')
print('left result:')
print(pd.merge(left,right,how='left',on='key')) # use only keys from left frame, similar to a SQL left outer join
print('\nright result:')
print(pd.merge(left,right,how='right',on='key')) # use only keys from right frames, similar to a SQL right outer join
print('\nouter result:')
print(pd.merge(left,right,how='outer',on='key')) # use union of keys from both frames, similar to a SQL full outer join

print("*** 另外一个Data ***")
left_new = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K1'],
                         'key2': ['K0', 'K1', 'K0', 'K1'],
                        'A': ['A0','A1','A2','A3'],
                        'B': ['B0','B1','B2','B3']})

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

print(left_new)
print('\n')
print(right_new)
print('\n')

print("***** 相同的key合在一起 *****")
print(pd.merge(left_new,right_new,on=['key1','key2']))
print('\n')

print("*** outer ****")
print(pd.merge(left_new,right_new, how='outer', on=['key1','key2'])) # use union of keys from both frames, similar to a SQL full outer join
print('\n')

print("***** right 以key2所对应的表为准 *****")
print(pd.merge(left_new,right_new, how='right', on=['key1','key2'])) # use only keys from right frames, similar to a SQL right outer join
print('\n')

print("***** left 以key1所对应的表为准 ******")
print(pd.merge(left_new,right_new, how='left', on=['key1','key2'])) # use only keys from left frame, similar to a SQL left outer join
print('\n')

print("**** inner 找两个表共同部分 *****")
print(pd.merge(left_new,right_new, how='inner', on=['key1','key2']))  # use intersection of keys from both frames, similar SQL inner join
print('\n')

print("***** Joining ******")
# Joining is a convenient method for combining the columns of two potentially differently-indexed DataFrames into a single result DataFrame.
left_new_one = pd.DataFrame({'A': ['A0','A1','A2'],
                    'B': ['B0','B1','B2']},
                   index = ['K0','K1','K2'])

right_new_one = pd.DataFrame({'C': ['C0','C2','C3'],
                    'D': ['D0','D2','D3']},
                   index = ['K0','K2','K3'])

print(left_new_one)
print('\n')
print(right_new_one)
print('\n')

print("**** join 找共同点 ****")
print(left_new_one.join(right_new_one))
print('\n')

print("**** outer join *****")
print(left_new_one.join(right_new_one, how='outer')) # use union of keys from both frames, similar to a SQL full outer join
print('\n')

print("**** inner *****")
print(left_new_one.join(right_new_one, how='inner'))  # use intersection of keys from both frames, similar SQL inner join
print('\n')

print("*** left 以left_new_one为准 ****")
print(left_new_one.join(right_new_one, how='left')) # use only keys from left frame, similar to a SQL left outer join
print('\n')

print("*** right 以right_new_one为准 ****")
print(left_new_one.join(right_new_one, how='right')) # use only keys from right frames, similar to a SQL right outer join

结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果觉得不错,就点赞或者关注或者留言~ ~
谢谢 ~ ~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值