# coding: utf-8 import pandas as pd import numpy as np df_obj1 = pd.DataFrame( { 'key':['a','b','a','c','b','a','a'], 'data1':np.random.randint(0,10,7) } ) print df_obj1 df_obj2 = pd.DataFrame( { 'key':['b','a','d'], 'data2':np.random.randint(0,10,3) } ) print df_obj2 # # merge()函数,根据多个键或者单个键将不同的DataFrame的行进行链接 # * 可以将链接的操作对比数据的链接操作 # * 该函数默认将两个对象中的列名重复的列作为“外键”进行链接 # * 默认的链接是“内连接”(inner),而内连接就是结果中的键的交集 pd.merge(df_obj1,df_obj2) # left_on ,right_on:用来指定左侧对象和右侧对象的外键,这是外键的一个列的名称 # 修改两个对象中的key这个列名 df_obj1 = df_obj1.rename(columns={'key':'key1'}) df_obj2 = df_obj2.rename(columns={'key':'key2'}) print df_obj1 print df_obj2 pd.merge(df_obj1,df_obj2,left_on='key1',right_on='key2') # * 修改默认链接方式 # * 外链接(outer):结果中的键是并集 # how:指定链接方式 pd.merge(df_obj1,df_obj2,left_on='key1',right_on='key2',how='outer') pd.merge(df_obj1,df_obj2,left_on='key1',right_on='key2',how='left') pd.merge(df_obj1,df_obj2,left_on='key1',right_on='key2',how='right') df_obj1 = pd.DataFrame( { 'key':['a','b','a','c','b','a','a'], 'data':np.random.randint(0,10,7) } ) print df_obj1 df_obj2 = pd.DataFrame( { 'key':['b','a','d'], 'data':np.random.randint(0,10,3) } ) print df_obj2 # 处理重复列名(不包括key) pd.merge(df_obj1,df_obj2,on ='key',suffixes=('_left','_right')) # * 链接 # * right_on 和 left_index # * lift_on 和 right_index df1 = pd.DataFrame( { 'key':['a','a','c','b'], 'data1':np.random.randint(0,10,4) } ) df2 = pd.DataFrame( { 'data2':np.random.randint(0,10,3) }, index=['a','b','d'] ) pd.merge(df1,df2,left_on='key',right_index=True)
Pandas数据合并merge
这篇博客详细介绍了Pandas库中DataFrame的数据合并操作,包括使用`merge()`函数进行不同DataFrame之间的行链接,通过设置`left_on`、`right_on`参数指定外键,以及调整链接方式如内连接、外连接、左连接和右连接。同时,文章还讨论了如何处理重复列名和使用`right_index`与`left_index`进行索引连接。
摘要由CSDN通过智能技术生成