pandas数据合并

使用contact,append,merge完成数据集合并
自己学习用,欢迎大佬指正。

1.concat

pd.concat()可以合并series和DataFrame对象,默认情况为逐行合并,且保留索引

1.1使用concat简单合并两个df
pd.concat([df1,df2])#纵向合并
pd.concat([df1,df2],axis=1)#横向合并
1.2考虑索引的合并:ignore_index

由于concat在合并是会保留索引,即使索引重复

ser1 = pd.Series(['A', 'B', 'C'], index=[1, 2, 3])
ser2 = pd.Series(['D', 'E', 'F'], index=[1, 2, 3])
pd.concat([ser1,ser2])

结果为:
保留了索引,所以导致重复
如果使用:

pd.concat([ser1,ser2],ignore_index=True)

结果为:
在这里插入图片描述

1.3 dataframe横向简单合并

有时候我们想要简单地合并两张具有同样行数的表格,不想管索引和顺序,但是由于concat合并时会保留索引,所以合并时出现不想要的NAN值。这里有一个暴力的方法:

df2.index=df1.index ##重置表格2的索引
pd.concat([df1,df2],axis=1)
1.4 join的方法合并

可以使用join的方法来进行两个数据集的交集或者并集合并,join=‘outer’(并集),join=‘inner’(交集)

df1=pd.DataFrame({"A":[1,2,3],"B":[2,3,4],"C":[3,4,5]})
df2=pd.DataFrame({"B":[2,3,4],"C":[3,4,5],"d":[3,4,6]})
>>
df1:     		df2:
A B C           B C D
1 2 3			2 3 4
2 3 4			3 4 5
3 4 5			4 5 6

使用交集合并df1和df2

innerdf = pd.concat([df1,df2],join="inner")###可以看到A和D列已经没有了
	B	C
0	2	3
1	3	4
2	4	5
0	2	3
1	3	4
2	4	5

使用并集合并df1和df2:

pd.concat([df1,df2],join="outer",axis=1)
	A	B	C	B	C	d
0	1	2	3	2	3	3
1	2	3	4	3	4	4
2	3	4	5	4	5	6

2.append

df1.appende(df2)

3.merge

merge的方法类似于SQL语言中的merge,可以一对一链接,也能一对多链接,一对多链接时,会保留重复值。merge还会默认将输入的共同列作为键合并。

3.1用merge简单合并

基本的语法为: pd.merge(df1,df2)

df1=pd.DataFrame({"A":[1,1],"B":[1,3]})
df2=pd.DataFrame({"A":1,"C":2})
pd.merge(df1,df2)#将df2重复之后再合并
>>
	A	B	C
0	1	1	2
1	1	3	2

……未完

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐