利用Python进行数据分析---数据规整化

1、合并数据集

、多对一合并

我们需要用到pandas中的merge函数,merge函数默认情况下合并的是两个数据集的交集(inner连接),当然还有其他的参数:

how里面有inner、outer、left、right,四个参数可以选择,分别代表:交集,并集,参与合并的左侧DataFrame,以及右侧

当列名对象相同时:
df1=pd.DataFrame({'key':['a','c','a','b','a','c','b','c'],'data1':range(8)})
df2=pd.DataFrame({'key':['a','b','d'],'data2':range(3)})
pd.merge(df1,df2,on='key')
返回
     key  data1  data2
0    a    0    0
1    a    2    0
2    a    4    0
3    b    3    1
4    b    6    1
当列名对象不同时:
df1=pd.DataFrame({'lkey':['a','c','a','b','a','c','b','c'],'data1':range(8)})
df2=pd.DataFrame({'rkey':['a','b','d'],'data2':range(3)})
pd.merge(df1,df2,left_on='lkey',right_on='rkey',how=‘outer’)
返回为
    
     lkey   data1 rkey    data2
0    a    0.0    a    0.0
1    a    2.0    a    0.0
2    a    4.0    a    0.0
3    c    1.0    NaN    NaN
4    c    5.0    NaN    NaN
5    c    7.0    NaN    NaN
6    b    3.0    b    1.0
7    b    6.0    b    1.0
8    NaN    NaN    d    2.0

②、多对多合并

df1=pd.DataFrame({'key':['b','c','b','a','b','a'],'data1':range(6)})
df2=pd.DataFrame({'key':['a','a','c','b','d'],'data2':range(5)})
pd.merge(df1,df2,on='key',how='right')
返回为
      key  data1 data2
0    b    0.0    3
1    b    2.0    3
2    b    4.0    3
3    c    1.0    2
4    a    3.0    0
5    a    5.0    0
6    a    3.0    1
7    a    5.0    1
8    d    NaN    4

多对多合并产生的是行的笛卡尔积,即df1有2个a,df2有2个a,并集会产生4个a

当需要根据多个键进行合并时,只要传入一个列名组成的列表就可以。

在合并运算时,需要对重复列名的处理,suffixes函数可以指定附加到左右两个DataFrame对象的重复列名上的字符串

2、索引上的合并

猜你喜欢

转载自www.cnblogs.com/jx1111jx/p/9574447.html