Pandas数据合并merge

这篇博客详细介绍了Pandas库中DataFrame的数据合并操作,包括使用`merge()`函数进行不同DataFrame之间的行链接,通过设置`left_on`、`right_on`参数指定外键,以及调整链接方式如内连接、外连接、左连接和右连接。同时,文章还讨论了如何处理重复列名和使用`right_index`与`left_index`进行索引连接。
摘要由CSDN通过智能技术生成
# 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值