使用pandas中merge进行数据整合

这节主要学习:学习如何利用pandas中的merge整合多个DataFrame或者Series中的数据。

知识要点

背景

看一个具体的例子。我们现在有2份数据,第1份数据存储的是订单信息,包含订单号、用户姓名、订单金额等。

第2份数据存储的是用户信息,包括用户姓名、电话号码、地址、用户的注册时间等信息。

现在有这样的需求,希望通过订单信息里的用户姓名,在用户信息里获得用户的电话号码、注册时间等信息。

会用merge函数解决

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,

         left_index=False, right_index=False, sort=True,

         suffixes=('_x', '_y'), copy=True, indicator=False,

         validate=None)

注:

left,right:用于连接的2个DataFrame,用左右来区分。注意merge函数一次只能连接2张表,如果需要连接多张表,可以连续使用多次merge函数。

on: 当两个DataFrame提供的合并列的列名称相同时,只设置on为合并列的列名称就可以。

left_on,right_on:当左右两个DataFrame提供的合并列的列名称不同时,适合使用这两个参数。

how:连接的方式可以是外连接、内连接、左连接、右连接,默认使用内连接。具体的区别稍后会重点展开。

 

内连接

格式:

df3=pd.merge(df1,df2,right_on='city',left_on='城市')

df3

同时出现在df1和df2中的城市(交集)

示例代码如下:

#merge内连接:同时出现在df1和df2中的城市

import pandas as pd

csv_file_price =  'E:/pycharm-workpace/data_analyze/num08/city_data.csv'

csv_file = 'E:/pycharm-workpace/data_analyze/num08/city.csv'

#准备数据

df_price=pd.read_csv(csv_file_price)

df_province=pd.read_csv(csv_file)

df1=df_price.iloc[0:10,0:3]

df2=df_province.iloc[2:10]

 

df3 = pd.merge(df1,df2,right_on='city',left_on='城市')

print(df3)

使用pandas中merge进行数据整合_第1张图片

外连接

两者的并集

格式:

df3=pd.merge(df1,df2,left_on='城市',right_on='city',how='outer')

左连接

结果中数据,对应的是df1中所有城市的记录

格式:

#实现左连接

df3=pd.merge(df1,df2,left_on='城市',right_on='city',how='left')

右连接

结果包含的是右边dataframe(df2)的合并列对应的所有记录

格式:

#实现右连接

df3=pd.merge(df1,df2,left_on='城市',right_on='city',how='right')

你可能感兴趣的:(数据分析)