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=