Merge, Join, Concat

本文介绍了数据操作中的Merge方法,它类似于SQL的join,用于根据共有的列连接两个DataFrame,支持inner、left、right、outer四种连接方式,并提到了基于多个键和索引的merge操作。此外,文章还涵盖了join和concat方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Merge
    首先merge的操作非常类似sql里面的join,实现将两个Dataframe根据一些共有的列连接起来,当然,在实际场景中,这些共有列一般是Id,可以选择inner(默认),left,right,outer 这几种模式,分别对应的是内连接,左连接,右连接
import numpy as np
import pandas as pd
dframe1 = pd.DataFrame({'key':['X','Z','Y','Z','X','X'],'value_df1': np.arange(6)})
print(dframe1)
dframe2 = pd.DataFrame({'key':['Q','Y','Z'],'value_df2':[1,2,3]})
print(dframe2)

在这里插入图片描述

  • InnerMerge (内连接)
pd.merge(dframe1,dframe2,on='key',how='inner') #how值默认inner

在这里插入图片描述

  • LeftMerge (左连接)
pd.merge(dframe1,dframe2,on='key',how='left')

在这里插入图片描述

  • RightMerge (右连接)
pd.merge(dframe1,dframe2,on='key',how='right')

在这里插入图片描述

  • OuterMerge (全连接)
pd.merge(dframe1,dframe2,on='key',how='outer')

在这里插入图片描述

  • MultipleKey Merge (基于多个key上的merge)
df_left = pd.DataFrame({'key1': ['SF', 'SF', 'LA'],
                  'key2': ['one', 'two', 'one'],
                  'left_data': [10,20,30]})
df_right = pd.DataFrame({'key1': ['SF', 'SF', 'LA', 'LA'],
                   'key2': ['one', 'one', 'one', 'two'],
                   'right_data': [40,50,60,70]})
print(df_left)
print(df_right)
pd.merge(df_left,df_right,on='key1')

在这里插入图片描述

  • Merge on Index (基于index上的merge)
df_left = pd.DataFrame({'key': ['X','Y','Z','X','Y'],
                  'data': range(5)})
df_right = pd.DataFrame({'group_data': [10, 20]}, index=['X', 'Y'])
print(df_left)
print(df_right)
pd.merge(df_left,df_right,left_on='key',right_index=True,how='outer')

在这里插入图片描述

2、join

left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
                    'B': ['B0', 'B1', 'B2', 'B3']}, 
                    index = ['K0', 'K1', 'K2', 'K3']) 
  
right = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'], 
                      'D': ['D0', 'D1', 'D2', 'D3']}, 
                      index = ['K0', 'K1', 'K2', 'K3']) 
print(left)
print(right)
left.join(right)

在这里插入图片描述

3、Concat

pd.concat(['df1','df2'],axis = 1/0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值