python高级-18.pandas - 合并数据集


import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from numpy import nan as NA

4.1 合并数据集

pd.merge() dataframe和dataframe

创建2个dataframe用来连接
df1 = DataFrame(
    {
   'key':list('aabbabc') ,'data1':np.arange(7)*10}
)
df1
key	data1
0	a	0
1	a	10
2	b	20
3	b	30
4	a	40
5	b	50
6	c	60
df2 = DataFrame(
    {
   'key':list('abd') ,'data2':np.arange(1,4)*10}
)
df2
key	data2
0	a	10
1	b	20
2	d	30
pd.merge 采用 inner 连接,取交集。没有交集的舍弃
pd.merge(df1,df2)
key	data1	data2
0	a	0	10
1	a	10	10
2	a	40	10
3	b	20	20
4	b	30	20
5	b	50	20
默认是以相同的列名称 为 键 进行合并, 一般情况下 建议 用 on=’’ 指定一下
pd.merge(df1,df2,on='key')
key	data1	data2
0	a	0	10
1	a	10	10
2	a	40	10
3	b	20	20
4	b	30	20
5	b	50	20

如果没有相同的列

df3 = DataFrame(
    {
    'Lkey':list('aabbabc') , 'data1':np.arange(7)*10}
)
df4 = DataFrame(
    {
   'Rkey':list('abd') ,'data2':np.arange(1,4)*10}  
)
print(df3)
print(df4)
  Lkey  data1
0    a      0
1    a     10
2    b     20
3    b     30
4    a     40
5    b     50
6    c     60
  Rkey  data2
0    a     10
1    b     20
2    d     30
没有相同的列 , 可以用 left_on= ‘’ right_on=’ ’
pd.merge(df3,df4 ,left_on='Lkey',right_on='Rkey')
	Lkey	data1	Rkey	data2
0	a	0	a	10
1	a	10	a	10
2	a	40	a	10
3	b	20	b	20
4	b	30	b	20
5	b	50	b	20
默认参数 how = ‘inner’ 去交集, how=‘outer’ 取并集
pd.merge(df1,df2,how='outer')
key	data1	data2
0	a	0.0	10.0
1	a	10.0	10.0
2	a	40.0	10.0
3	b	20.0	20.0
4	b	30.0	20.0
5	b	50.0	20.0
6	c	60.0	NaN
7	d	NaN	30.0
how = left 以左边为主 ,how=right 右边为主 .mysql 左连接与右连接
pd.merge(df3,df4,left_on='Lkey',right_on=
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值