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、索引上的合并
原文地址:https://www.cnblogs.com/jx1111jx/p/9574447.html
时间: 2024-10-03 16:55:10